From 27ead7b108f5f9bb509df0f44729d3ea05dd4512 Mon Sep 17 00:00:00 2001 From: Thomas Hiller Date: Sat, 15 Jul 2023 00:16:24 +0200 Subject: [PATCH] initial commit --- .gitignore | 8 + AUTHORS.md | 6 + GPRGRAVEL/GPRGRAVEL.m | 97 + GPRGRAVEL/GPRGRAVEL_createGUI.m | 175 ++ GPRGRAVEL/GPRGRAVEL_createGridPlots.m | 200 ++ GPRGRAVEL/GPRGRAVEL_createMenus.m | 125 + GPRGRAVEL/GPRGRAVEL_createPanelControl.m | 92 + GPRGRAVEL/GPRGRAVEL_createPanelDomain.m | 242 ++ GPRGRAVEL/GPRGRAVEL_createPanelGrains.m | 195 ++ GPRGRAVEL/GPRGRAVEL_createPanelParameter.m | 329 +++ GPRGRAVEL/GPRGRAVEL_createStatusbar.m | 97 + GPRGRAVEL/GPRGRAVEL_loadDefaults.m | 224 ++ GPRGRAVEL/GPRGRAVEL_setPositionOnScreen.m | 81 + README.md | 91 + callbacks/edits/onEditValue.m | 231 ++ callbacks/menus/onMenuExport.m | 89 + callbacks/menus/onMenuHelp.m | 143 ++ callbacks/menus/onMenuImport.m | 95 + callbacks/menus/onMenuRestartQuit.m | 70 + callbacks/menus/onMenuView.m | 96 + callbacks/menus/onMenuViewFigure.m | 283 +++ callbacks/popup/onPopupSatProfile.m | 81 + callbacks/popup/onPopupShape.m | 89 + callbacks/push/onPushAxView.m | 116 + callbacks/push/onPushLoadGSD.m | 157 ++ callbacks/push/onPushLoadTarget.m | 135 + callbacks/push/onPushRun.m | 161 ++ callbacks/radio/onRadioFixRNG.m | 78 + callbacks/radio/onRadioSatProfile.m | 86 + callbacks/radio/onRadioSurface.m | 82 + callbacks/slider/onSlider.m | 70 + functions/exportData.m | 396 +++ functions/getDK.m | 62 + functions/getRotationMatrixFromAngleandAxis.m | 111 + functions/getSubBodyCoords.m | 166 ++ functions/interface/clearSingleAxis.m | 93 + functions/interface/findParentOfType.m | 73 + functions/interface/minimizePanel.m | 113 + functions/interface/onFigureSizeChange.m | 67 + functions/interface/plotDomaindata.m | 121 + functions/interface/plotGSDdata.m | 123 + functions/interface/plotMatrixdata.m | 134 + functions/interface/plotProfiledata.m | 150 ++ functions/interface/plotSlicedata.m | 145 ++ functions/interface/setTargetPosition.m | 110 + functions/interface/showLogInfo.m | 62 + functions/interface/updateStatusInformation.m | 91 + functions/placeGrains.m | 586 +++++ functions/placeWater.m | 596 +++++ functions/prepareDomain.m | 385 +++ functions/prepareVoxelGSD.m | 269 ++ functions/updateIndexList.m | 174 ++ gprgravel_gui.png | Bin 0 -> 123649 bytes input/GSD/histogram.txt | 14 + input/GSD/histogram_with_header.txt | 15 + input/GSD/list.txt | 2188 +++++++++++++++++ input/GSD/list_with header.txt | 2187 ++++++++++++++++ input/Targets/MP_015deg_z040cm_Target.h5 | Bin 0 -> 4764144 bytes logo.png | Bin 0 -> 175773 bytes startGPRGRAVEL.m | 64 + 60 files changed, 12519 insertions(+) create mode 100644 .gitignore create mode 100644 AUTHORS.md create mode 100644 GPRGRAVEL/GPRGRAVEL.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createGUI.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createGridPlots.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createMenus.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createPanelControl.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createPanelDomain.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createPanelGrains.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createPanelParameter.m create mode 100644 GPRGRAVEL/GPRGRAVEL_createStatusbar.m create mode 100644 GPRGRAVEL/GPRGRAVEL_loadDefaults.m create mode 100644 GPRGRAVEL/GPRGRAVEL_setPositionOnScreen.m create mode 100644 README.md create mode 100644 callbacks/edits/onEditValue.m create mode 100644 callbacks/menus/onMenuExport.m create mode 100644 callbacks/menus/onMenuHelp.m create mode 100644 callbacks/menus/onMenuImport.m create mode 100644 callbacks/menus/onMenuRestartQuit.m create mode 100644 callbacks/menus/onMenuView.m create mode 100644 callbacks/menus/onMenuViewFigure.m create mode 100644 callbacks/popup/onPopupSatProfile.m create mode 100644 callbacks/popup/onPopupShape.m create mode 100644 callbacks/push/onPushAxView.m create mode 100644 callbacks/push/onPushLoadGSD.m create mode 100644 callbacks/push/onPushLoadTarget.m create mode 100644 callbacks/push/onPushRun.m create mode 100644 callbacks/radio/onRadioFixRNG.m create mode 100644 callbacks/radio/onRadioSatProfile.m create mode 100644 callbacks/radio/onRadioSurface.m create mode 100644 callbacks/slider/onSlider.m create mode 100644 functions/exportData.m create mode 100644 functions/getDK.m create mode 100644 functions/getRotationMatrixFromAngleandAxis.m create mode 100644 functions/getSubBodyCoords.m create mode 100644 functions/interface/clearSingleAxis.m create mode 100644 functions/interface/findParentOfType.m create mode 100644 functions/interface/minimizePanel.m create mode 100644 functions/interface/onFigureSizeChange.m create mode 100644 functions/interface/plotDomaindata.m create mode 100644 functions/interface/plotGSDdata.m create mode 100644 functions/interface/plotMatrixdata.m create mode 100644 functions/interface/plotProfiledata.m create mode 100644 functions/interface/plotSlicedata.m create mode 100644 functions/interface/setTargetPosition.m create mode 100644 functions/interface/showLogInfo.m create mode 100644 functions/interface/updateStatusInformation.m create mode 100644 functions/placeGrains.m create mode 100644 functions/placeWater.m create mode 100644 functions/prepareDomain.m create mode 100644 functions/prepareVoxelGSD.m create mode 100644 functions/updateIndexList.m create mode 100644 gprgravel_gui.png create mode 100644 input/GSD/histogram.txt create mode 100644 input/GSD/histogram_with_header.txt create mode 100644 input/GSD/list.txt create mode 100644 input/GSD/list_with header.txt create mode 100644 input/Targets/MP_015deg_z040cm_Target.h5 create mode 100644 logo.png create mode 100644 startGPRGRAVEL.m diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..17a6eb2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.asv +*.aux +*.log +*.toc +*.sty +*.mat +/output +/externals diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 0000000..ee3e5d3 --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,6 @@ +**GRAINPACKER** is developed by + +* Thomas Hiller, thomas.hiller@bgr.de +* Jan Igel, jan.igel@leibniz-liag.de +* Stephan Schennen, s.schennen@t-online.de +* Sam Stadler, sam.stadler@leibniz-liag.de \ No newline at end of file diff --git a/GPRGRAVEL/GPRGRAVEL.m b/GPRGRAVEL/GPRGRAVEL.m new file mode 100644 index 0000000..42cef17 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL.m @@ -0,0 +1,97 @@ +function GPRGRAVEL +%GPRGRAVEL is a graphical user interface (GUI) to create "grain packings" +%(spheres or ellipsoids) for 3D GPR simulations based on grain size +% distributions (GSDs) +% +% Syntax: +% GPRGRAVEL +% +% Inputs: +% none +% +% Outputs: +% none +% +% Example: +% GPRGRAVEL +% +% Other m-files required: +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% GUI 'header' info and default GUI settings +myui.version = '0.1.0'; +myui.date = '14.07.2023'; +myui.author = 'Thomas Hiller'; + +myui.fontsize = 8; +myui.axfontsize = 10; +myui.linewidth = 2; +myui.color.domain = [141 211 199]./255; +myui.color.grains = [251 128 114]./255; +myui.color.params = [128 177 211]./255; +% 255 255 179 +% 190 186 218 + +%% Default data settings +data = GPRGRAVEL_loadDefaults; +tmp = mfilename('fullpath'); +idcs = strfind(tmp,filesep); +newdir = tmp(1:idcs(end-1)-1); +data.params.GPRGRAVELpath = newdir; + +%% GUI initialization +gui.figh = figure('Name','GPRGRAVEL',... + 'NumberTitle','off','Tag','GPRGRAVEL','ToolBar','none','MenuBar','none',... + 'SizeChangedFcn',@onFigureSizeChange); + +% position on screen +pos = GPRGRAVEL_setPositionOnScreen; +set(gui.figh,'Position',pos); + +%% GUI data +gui.myui = myui; + +% save the data struct within the GUI +setappdata(gui.figh,'data',data); +setappdata(gui.figh,'gui',gui); + +%% Create GUI elements +GPRGRAVEL_createGUI(gui.figh,true); +% update status bar +updateStatusInformation(gui.figh); +% plot domain +plotDomaindata(gui.figh); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/GPRGRAVEL/GPRGRAVEL_createGUI.m b/GPRGRAVEL/GPRGRAVEL_createGUI.m new file mode 100644 index 0000000..f700287 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createGUI.m @@ -0,0 +1,175 @@ +function GPRGRAVEL_createGUI(h,wbon) +%GPRGRAVEL_createGUI controls the creation of all GUI elements +% +% Syntax: +% GPRGRAVEL_createGUI(h) +% +% Inputs: +% h - figure handle +% wbon - show waitbar (yes=true, no=false) +% +% Outputs: +% none +% +% Example: +% GPRGRAVEL_createGUI(h,true) +% +% Other m-files required: +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% get GUI data +data = getappdata(h,'data'); +gui = getappdata(h,'gui'); +myui = gui.myui; + +%% initialize wait bar +if wbon + hwb = waitbar(0,'loading ...','Name','GPRGRAVEL initialization','Visible','off'); + steps = 6; + if ~isempty(h) + posf = get(h,'Position'); + set(hwb,'Units','Pixel') + posw = get(hwb,'Position'); + set(hwb,'Position',[posf(1)+posf(3)/2-posw(3)/2 posf(2)+posf(4)/2-posw(4)/2 posw(3:4)]); + end + set(hwb,'Visible','on'); +end + +%% uimenus +if wbon + waitbar(1/steps,hwb,'loading GUI elements - menus'); +end +gui = GPRGRAVEL_createMenus(gui); + +%% MAIN GUI "BOX" +gui.main = uix.VBox('Parent',gui.figh,'Visible','off'); + +% top part for settings and plots +gui.top = uix.HBox('Parent',gui.main); +% bottom part for the status bar +gui.bottom = uix.HBox('Parent',gui.main); +set(gui.main,'Heights',[-1 20]); + +% top left contains the three main panels plus the control panel +gui.leftTop = uix.VBox('Parent',gui.top); +% all plots in a flexible grid on the right side +gui.right = uix.GridFlex('Parent',gui.top,'Spacing',7); +set(gui.top,'Widths',[300 -1]); +set(gui.top,'MinimumWidths',[300 200]); + +% the three main panels are inside a vertically scrollable panel +gui.left = uix.ScrollingPanel('Parent',gui.leftTop); +% but the control panel is fixed to the bottom +gui.panels.Control.main = uix.BoxPanel('Parent',gui.leftTop,'Title','Control',... + 'TitleColor',[164 164 164]./255,'ForegroundColor','k'); +set(gui.leftTop,'Heights',[-1 53]); + +%% A. settings column +gui.panels.main = uix.VBox('Parent',gui.left); +gui.panels.Grains.main = uix.BoxPanel('Parent',gui.panels.main,'Title','Grains',... + 'TitleColor',myui.color.grains,'ForegroundColor','k','MinimizeFcn',@minimizePanel); +gui.panels.Domain.main = uix.BoxPanel('Parent',gui.panels.main,'Title','Domain',... + 'TitleColor',myui.color.domain,'ForegroundColor','k','MinimizeFcn',@minimizePanel); +gui.panels.Params.main = uix.BoxPanel('Parent',gui.panels.main,'Title','Parameter',... + 'TitleColor',myui.color.params,'ForegroundColor','k','MinimizeFcn',@minimizePanel); +uix.Empty('Parent',gui.panels.main); + +% adjust the heights of all left-column-panels +% edit and popup elements are 24 +edith = 22; +% panel header is always 22 high +headerh = 22; +% spacing is set to 3 +spacing = 3; +% maximal height of each panel +grains_max = 6*edith+7*spacing+headerh; +% params_max = 8*edith+9*spacing+headerh-14; +params_max = 13*edith+14*spacing+headerh-5; +domain_max = 8*edith+9*spacing+headerh; +% save the heights information (needed for minimizing the panels) +myui.heights = [22 22 22 -1; grains_max domain_max params_max -1]; +set(gui.panels.main,'Heights',myui.heights(2,:),... + 'MinimumHeights',[22 22 22 0]); +% the 'MinimumHeights' guarantees that the three panels fit into the +% ScrollingPanel when the GUI becomes smaller +set(gui.left,'Heights',-1,'MinimumHeights',grains_max+domain_max+params_max); + +if wbon + waitbar(2/steps,hwb,'loading GUI elements - Grains panel'); +end +[gui,myui] = GPRGRAVEL_createPanelGrains(data,gui,myui); + +if wbon + waitbar(3/steps,hwb,'loading GUI elements - Parameter panel'); +end +[gui,myui] = GPRGRAVEL_createPanelParameter(data,gui,myui); + +if wbon + waitbar(4/steps,hwb,'loading GUI elements - Domain panel'); +end +[gui,myui] = GPRGRAVEL_createPanelDomain(data,gui,myui); + +if wbon + waitbar(5/steps,hwb,'loading GUI elements - Control panel'); +end +[gui,myui] = GPRGRAVEL_createPanelControl(gui,myui); + +if wbon + waitbar(6/steps,hwb,'loading GUI elements - Plot panel'); +end +[gui,myui] = GPRGRAVEL_createGridPlots(gui,myui); + +% delete wait bar +if wbon + delete(hwb); +end + +[gui,myui] = GPRGRAVEL_createStatusbar(gui,myui); + +% make the main GUI visible +set(gui.main,'Visible','on'); + +%% enable all menus +set(gui.menu_handles.file,'Enable','on'); +set(gui.menu_handles.view,'Enable','on'); +set(gui.menu_handles.help,'Enable','on'); + +%% update the GUI data +gui.myui = myui; +setappdata(gui.figh,'gui',gui); +setappdata(gui.figh,'data',data); +set(gui.text_handles.Status,'String','GPRGRAVEL successfully started'); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/GPRGRAVEL/GPRGRAVEL_createGridPlots.m b/GPRGRAVEL/GPRGRAVEL_createGridPlots.m new file mode 100644 index 0000000..90902f7 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createGridPlots.m @@ -0,0 +1,200 @@ +function [gui,myui] = GPRGRAVEL_createGridPlots(gui,myui) +%GPRGRAVEL_createGridPlots creates the "Plots" grid panel +% +% Syntax: +% [gui,myui] = GPRGRAVEL_createGridPlots(gui,myui) +% +% Inputs: +% gui - figure gui elements structure +% myui - individual GUI settings structure +% +% Outputs: +% gui +% myui +% +% Example: +% [gui,myui] = GPRGRAVEL_createGridPlots(gui,myui) +% +% Other m-files required: +% findjobj.m +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% first create the individual tab panels +%(1,1) grains +gui.panels.Plot.grains = uix.TabPanel('Parent',gui.right,... + 'BackgroundColor',myui.color.grains); +%(2,1) results +gui.panels.Plot.result = uix.TabPanel('Parent',gui.right,... + 'BackgroundColor',myui.color.params); +%(1,2) domain +gui.panels.Plot.domain = uix.TabPanel('Parent',gui.right,... + 'BackgroundColor',myui.color.domain); +%(2,2) info +gui.panels.Plot.info = uix.TabPanel('Parent',gui.right,... + 'BackgroundColor',[164 164 164]./255); + +%% domain panel +plotDOMAIN = uix.VBox('Parent',gui.panels.Plot.domain,'Spacing',3,'Padding',3); +gui.panels.Plot.domain.TabTitles = {'Domain Setup'}; +gui.panels.Plot.domain.TabWidth = 75; + +% add view buttons and axes to the panel +plotDomain = uicontainer('Parent',plotDOMAIN); +DomainButtons = uix.HButtonBox('Parent',plotDOMAIN); +gui.push_handles.XZLd = uicontrol('Parent',DomainButtons,... + 'String','XZ',... + 'Tag','domain',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.YZLd = uicontrol('Parent',DomainButtons,... + 'String','YZ',... + 'Tag','domain',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.XYLd = uicontrol('Parent',DomainButtons,... + 'String','XY',... + 'Tag','domain',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.DLd = uicontrol('Parent',DomainButtons,... + 'String','3D',... + 'Tag','domain',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +set(plotDOMAIN,'Heights',[-1 30]); +gui.axes_handles.domain = axes('Parent',plotDomain,'Box','on'); +view(gui.axes_handles.domain,3); +axis(gui.axes_handles.domain,'equal'); +clearSingleAxis(gui.axes_handles.domain); + +%% results panel +plotVOLUME = uix.VBox('Parent',gui.panels.Plot.result,'Spacing',3,'Padding',3); +plotSLICE = uix.VBox('Parent',gui.panels.Plot.result,'Spacing',3,'Padding',3); +plotPROFILE = uix.HBox('Parent',gui.panels.Plot.result,'Spacing',3,'Padding',3); + +gui.panels.Plot.result.TabTitles = {'Monitor','Slice','Profiles'}; +gui.panels.Plot.result.TabWidth = 85; + +% Volume +% add view buttons and axes to the panel +plotVolume = uicontainer('Parent',plotVOLUME); +VolumeButtons = uix.HButtonBox('Parent',plotVOLUME); +gui.push_handles.XZLv = uicontrol('Parent',VolumeButtons,... + 'String','XZ',... + 'Tag','monitor',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.YZLv = uicontrol('Parent',VolumeButtons,... + 'String','YZ',... + 'Tag','monitor',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.XYLv = uicontrol('Parent',VolumeButtons,... + 'String','XY',... + 'Tag','monitor',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.DLv = uicontrol('Parent',VolumeButtons,... + 'String','3D',... + 'Tag','monitor',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +set(plotVOLUME,'Heights',[-1 30]); +gui.axes_handles.Volume = axes('Parent',plotVolume,'Box','on'); +view(gui.axes_handles.Volume,3); +axis(gui.axes_handles.Volume,'equal'); +clearSingleAxis(gui.axes_handles.Volume); + +% Slice +plotSliceBox = uix.HBox('Parent',plotSLICE); +plotSlice = uicontainer('Parent',plotSliceBox); +gui.slider_handles.slider = uicontrol('Style','Slider',... + 'Parent',plotSliceBox,'Callback',@onSlider); + +SliceButtons = uix.HButtonBox('Parent',plotSLICE); +gui.push_handles.XZLs = uicontrol('Parent',SliceButtons,... + 'String','XZ',... + 'Tag','slice',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.YZLs = uicontrol('Parent',SliceButtons,... + 'String','YZ',... + 'Tag','slice',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +gui.push_handles.XYLs = uicontrol('Parent',SliceButtons,... + 'String','XY',... + 'Tag','slice',... + 'FontSize',myui.fontsize,... + 'Callback',@onPushAxView); +set(plotSLICE,'Heights',[-1 30]); +set(plotSliceBox,'Widths',[-1 20]); +gui.axes_handles.Slice = axes('Parent',plotSlice,'Box','on'); +axis(gui.axes_handles.Slice,'equal'); +clearSingleAxis(gui.axes_handles.Slice); + +% Profiles +plotProfile1 = uicontainer('Parent',plotPROFILE); +plotProfile2 = uicontainer('Parent',plotPROFILE); +gui.axes_handles.ProfileAir = axes('Parent',plotProfile1,'Box','on'); +gui.axes_handles.ProfileH2O = axes('Parent',plotProfile2,'Box','on'); +clearSingleAxis(gui.axes_handles.ProfileAir); +clearSingleAxis(gui.axes_handles.ProfileH2O); + +%% grains / histogram panel +plotGrainsHistIn = uicontainer('Parent',gui.panels.Plot.grains); +plotGrainsHistOut = uicontainer('Parent',gui.panels.Plot.grains); +gui.panels.Plot.grains.TabTitles = {'GSD Input','GSD Output'}; +gui.panels.Plot.grains.TabWidth = 75; + +gui.axes_handles.histIn = axes('Parent',plotGrainsHistIn,'Box','on'); +gui.axes_handles.histOut = axes('Parent',plotGrainsHistOut,'Box','on'); +clearSingleAxis(gui.axes_handles.histIn); +clearSingleAxis(gui.axes_handles.histOut); + +%% info panel +plotInfo = uix.VBox('Parent',gui.panels.Plot.info,'Spacing',3,'Padding',3); +gui.panels.Plot.info.TabTitles = {'Info'}; +gui.panels.Plot.info.TabWidth = 75; + +gui.listbox_handles.info = uicontrol('Parent',plotInfo,... + 'Style','listbox','Tag','Info',... + 'FontSize',10,'String','>>',... + 'HorizontalAlignment','left','Enable','on'); + +% arrange the panels in a 2x2 grid +set(gui.right,'Widths',[-1 -1],'Heights',[-1 -1]); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/GPRGRAVEL/GPRGRAVEL_createMenus.m b/GPRGRAVEL/GPRGRAVEL_createMenus.m new file mode 100644 index 0000000..02640bb --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createMenus.m @@ -0,0 +1,125 @@ +function gui = GPRGRAVEL_createMenus(gui) +%GPRGRAVEL_createMenus creates all GUI menus +% +% Syntax: +% gui = GPRGRAVEL_createMenus(gui) +% +% Inputs: +% gui - figure gui elements structure +% +% Outputs: +% gui +% +% Example: +% gui = GPRGRAVEL_createMenus(gui) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% 1. File +gui.menu_handles.file = uimenu(gui.figh,... + 'Label','File',... + 'Enable','off'); + +% 1.1 Import +gui.menu_handles.file_import = uimenu(gui.menu_handles.file,... + 'Label','Import Data','Enable','off',... + 'Callback',@onMenuImport); + +% 1.2 Export +gui.menu_handles.file_export = uimenu(gui.menu_handles.file,... + 'Label','Export Data','Enable','off',... + 'Callback',@onMenuExport); + +% 1.3 Restart +gui.menu_handles.file_restart = uimenu(gui.menu_handles.file,... + 'Label','Restart',... + 'Separator','on',... + 'Callback',@onMenuRestartQuit); + +% 1.4 Quit +gui.menu_handles.file_quit = uimenu(gui.menu_handles.file,... + 'Label','Quit',... + 'Callback',@onMenuRestartQuit); + +%% 2. Extras +gui.menu_handles.view = uimenu(gui.figh,... + 'Label','View',... + 'Enable','off'); + +% 2.1 Tooltips (on/off) +gui.menu_handles.view_tooltips = uimenu(gui.menu_handles.view,... + 'Label','Tooltips',... + 'Checked','on','Enable','off',... + 'Callback',@onMenuView); + +% 2.2 Figure Toolbar +gui.menu_handles.view_toolbar = uimenu(gui.menu_handles.view,... + 'Label','Figure Toolbar',... + 'Callback',@onMenuView); +% 2.3.1 Figures +gui.menu_handles.view_figures = uimenu(gui.menu_handles.view,... + 'Label','Figures','Separator','on'); +% 2.3.1.1 all grains as voxels +gui.menu_handles.view_figures_voxelgrains = uimenu(gui.menu_handles.view_figures,... + 'Label','Voxelised Grains','Enable','off',... + 'Callback',@onMenuViewFigure); +% 2.3.1.2 only magnetization +gui.menu_handles.view_figures_volume = uimenu(gui.menu_handles.view_figures,... + 'Label','Volume','Enable','off',... + 'Callback',@onMenuViewFigure); +% % 2.3.1.3 only ramp +% gui.menu_handles.view_figures_ramp = uimenu(gui.menu_handles.view_figures,... +% 'Label','Switch-off Ramp',... +% 'Enable','off',... +% 'Callback',@onMenuViewFigure); +% % 2.3.1.4 only pulse +% gui.menu_handles.view_figures_pulse = uimenu(gui.menu_handles.view_figures,... +% 'Label','Pulse',... +% 'Enable','off',... +% 'Callback',@onMenuViewFigure); + +%% 3. Help +gui.menu_handles.help = uimenu(gui.figh,... + 'Label','Help',... + 'Enable','off'); + +% 3.1 About +gui.menu_handles.help_about = uimenu(gui.menu_handles.help,... + 'Label','About',... + 'Callback',@onMenuHelp); + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/GPRGRAVEL/GPRGRAVEL_createPanelControl.m b/GPRGRAVEL/GPRGRAVEL_createPanelControl.m new file mode 100644 index 0000000..e3a0bdb --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createPanelControl.m @@ -0,0 +1,92 @@ +function [gui,myui] = GPRGRAVEL_createPanelControl(gui,myui) +%GPRGRAVEL_createPanelControl creates "Control" panel +% +% Syntax: +% [gui,myui] = GPRGRAVEL_createPanelControl(gui,myui) +% +% Inputs: +% gui - figure gui elements structure +% myui - individual GUI settings structure +% +% Outputs: +% gui +% myui +% +% Example: +% [gui,myui] = GPRGRAVEL_createPanelControl(gui,myui) +% +% Other m-files required: +% findjobj.m +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +gui.panels.Control.HBox = uix.HBox('Parent', gui.panels.Control.main,... + 'Spacing',3,'Padding',3); + +tstr = 'Initialize domain.'; +gui.push_handles.Init = uicontrol('Style','pushbutton',... + 'Parent',gui.panels.Control.HBox,... + 'String','INIT / RESET',... + 'Tag','INIT',... + 'ToolTipString',tstr,... + 'FontSize',myui.fontsize,... + 'BackGroundColor',[102 166 30]./255,... + 'UserData',struct('Tooltipstr',tstr),... + 'Enable','on',... + 'Callback',@onPushRun); + +tstr = 'Start calculation.'; +gui.push_handles.Run = uicontrol('Style','pushbutton',... + 'Parent',gui.panels.Control.HBox,... + 'String','RUN',... + 'Tag','RUN',... + 'ToolTipString',tstr,... + 'FontSize',myui.fontsize,... + 'BackGroundColor',[102 166 30]./255,... + 'UserData',struct('Tooltipstr',tstr),... + 'Enable','off',... + 'Callback',@onPushRun); + +tstr = 'Reset axes grid to equally spaced 2x2.'; +gui.push_handles.Grid = uicontrol('Style','pushbutton',... + 'Parent',gui.panels.Control.HBox,... + 'String','RESET VIEW',... + 'Tag','GRID',... + 'ToolTipString',tstr,... + 'FontSize',myui.fontsize,... + 'UserData',struct('Tooltipstr',tstr),... + 'Enable','on',... + 'Callback',@onPushReset); + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/GPRGRAVEL/GPRGRAVEL_createPanelDomain.m b/GPRGRAVEL/GPRGRAVEL_createPanelDomain.m new file mode 100644 index 0000000..603d317 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createPanelDomain.m @@ -0,0 +1,242 @@ +function [gui,myui] = GPRGRAVEL_createPanelDomain(data,gui,myui) +%GPRGRAVEL_createPanelDomain creates "Domain" settings panel +% +% Syntax: +% [gui,myui] = GPRGRAVEL_createPanelDomain(gui,myui,data) +% +% Inputs: +% data - figure data structure +% gui - figure gui elements structure +% myui - individual GUI settings structure +% +% Outputs: +% gui +% myui +% +% Example: +% [gui,myui] = GPRGRAVEL_createPanelDomain(data,gui,myui) +% +% Other m-files required: +% findjobj.m +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% create all boxes +gui.panels.Domain.VBox = uix.VBox('Parent', gui.panels.Domain.main,... + 'Spacing',3,'Padding',3); + +textDomain = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); +setDomain = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); +textDx = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); +setDx = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); +textDip = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); +setDip = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); +textVolSpecies = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); +setVolSpecies = uix.HBox('Parent',gui.panels.Domain.VBox,'Spacing',3); + +%% Domain +gui.text_handles.domainx = uicontrol('Style','Text',... + 'Parent',textDomain,... + 'String','x [m]',... + 'FontSize',myui.fontsize); +gui.text_handles.domainy = uicontrol('Style','Text',... + 'Parent',textDomain,... + 'String','y [m]',... + 'FontSize',myui.fontsize); +gui.text_handles.domainz = uicontrol('Style','Text',... + 'Parent',textDomain,... + 'String','z [m]',... + 'FontSize',myui.fontsize); + +tstr = 'Set domain size.'; +gui.edit_handles.xm = uicontrol('Style','Edit',... + 'Parent',setDomain,... + 'String',sprintf('%4.3f',data.domain.xm),... + 'Tag','domain_xm',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.xm),... + 'Callback',@onEditValue); +gui.edit_handles.ym = uicontrol('Style','Edit',... + 'Parent',setDomain,... + 'String',sprintf('%4.3f',data.domain.ym),... + 'Tag','domain_ym',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.ym),... + 'Callback',@onEditValue); +gui.edit_handles.zm = uicontrol('Style','Edit',... + 'Parent',setDomain,... + 'String',sprintf('%4.3f',data.domain.zm),... + 'Tag','domain_zm',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.zm),... + 'Callback',@onEditValue); +set(setDomain,'Widths',[-1 -1 -1]); + +%% dx & porosity +gui.text_handles.dx = uicontrol('Style','Text',... + 'Parent',textDx,... + 'String','grid dx [m]',... + 'FontSize',myui.fontsize); +gui.text_handles.porosity = uicontrol('Style','Text',... + 'Parent',textDx,... + 'String','porosity [0-1]',... + 'FontSize',myui.fontsize); + +tstr = 'Set domain discretization.'; +gui.edit_handles.dx = uicontrol('Style','Edit',... + 'Parent',setDx,... + 'String',sprintf('%4.3f',data.domain.dx),... + 'Tag','domain_dx',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.dx),... + 'Callback',@onEditValue); +tstr = 'Set domain porosity.'; +gui.edit_handles.porosity = uicontrol('Style','Edit',... + 'Parent',setDx,... + 'String',sprintf('%4.3f',data.domain.porosity),... + 'Tag','domain_porosity',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.porosity),... + 'Callback',@onEditValue); +set(setDx,'Widths',[-1 -1]); + +%% surface dip +gui.text_handles.maskdipx = uicontrol('Style','Text',... + 'Parent',textDip,... + 'String','surface dip x [deg]',... + 'FontSize',myui.fontsize); +gui.text_handles.maskdipy = uicontrol('Style','Text',... + 'Parent',textDip,... + 'String','surface dip y [deg]',... + 'FontSize',myui.fontsize); + +tstr = 'Set dip angle in x-direction'; +gui.edit_handles.maskdipx = uicontrol('Style','Edit',... + 'Parent',setDip,... + 'String',sprintf('%d',data.params.maskdipx(1)),... + 'Tag','params_maskdipx',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.maskdipx 0 89]),... + 'Callback',@onEditValue); +tstr = 'Set dip angle in y-direction'; +gui.edit_handles.maskdipy = uicontrol('Style','Edit',... + 'Parent',setDip,... + 'String',sprintf('%d',data.params.maskdipy(1)),... + 'Tag','params_maskdipy',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.maskdipy 0 89]),... + 'Callback',@onEditValue); +set(setDip,'Widths',[-1 -1]); + +%% volumetric ratios of species +gui.text_handles.volair = uicontrol('Style','Text',... + 'Parent',textVolSpecies,... + 'String','air [0-1]',... + 'FontSize',myui.fontsize); +gui.text_handles.volh2o = uicontrol('Style','Text',... + 'Parent',textVolSpecies,... + 'String','water [0-1]',... + 'FontSize',myui.fontsize); +gui.text_handles.volmtx = uicontrol('Style','Text',... + 'Parent',textVolSpecies,... + 'String','matrix [0-1]',... + 'FontSize',myui.fontsize); + +tstr = 'Set volumetric ratios of species.'; +gui.edit_handles.volair = uicontrol('Style','Edit',... + 'Parent',setVolSpecies,... + 'String',sprintf('%4.3f',data.domain.VolSpeciesAIR),... + 'Tag','domain_VolSpeciesAIR',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.VolSpeciesAIR),... + 'Callback',@onEditValue); +gui.edit_handles.volh2o = uicontrol('Style','Edit',... + 'Parent',setVolSpecies,... + 'String',sprintf('%4.3f',data.domain.VolSpeciesH2O),... + 'Tag','domain_VolSpeciesH2O',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.VolSpeciesH2O),... + 'Callback',@onEditValue); +gui.edit_handles.volmtx = uicontrol('Style','Edit',... + 'Parent',setVolSpecies,... + 'String',sprintf('%4.3f',data.domain.VolSpeciesMTX),... + 'Tag','domain_VolSpeciesMTX',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',data.init.domain.VolSpeciesMTX),... + 'Callback',@onEditValue); +set(setVolSpecies,'Widths',[-1 -1 -1]); + +%% Java Hack to adjust the text fields vertical alignment +jh = findjobj(gui.text_handles.domainx); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.domainy); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.domainz); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.dx); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.porosity); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.maskdipx); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.maskdipy); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.volair); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.volh2o); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.volmtx); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/GPRGRAVEL/GPRGRAVEL_createPanelGrains.m b/GPRGRAVEL/GPRGRAVEL_createPanelGrains.m new file mode 100644 index 0000000..1706cc3 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createPanelGrains.m @@ -0,0 +1,195 @@ +function [gui,myui] = GPRGRAVEL_createPanelGrains(data,gui,myui) +%GPRGRAVEL_createPanelGrains creates "Grains" settings panel +% +% Syntax: +% [gui,myui] = GPRGRAVEL_createPanelGrains(gui,myui,data) +% +% Inputs: +% data - figure data structure +% gui - figure gui elements structure +% myui - individual GUI settings structure +% +% Outputs: +% gui +% myui +% +% Example: +% [gui,myui] = GPRGRAVEL_createPanelGrains(data,gui,myui) +% +% Other m-files required: +% findjobj.m +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% create all boxes +gui.panels.Grains.VBox = uix.VBox('Parent', gui.panels.Grains.main,... + 'Spacing',3,'Padding',3); + +getGSD = uix.HBox('Parent',gui.panels.Grains.VBox,'Spacing',3); +setShape = uix.HBox('Parent',gui.panels.Grains.VBox,'Spacing',3); +textEllipse = uix.HBox('Parent',gui.panels.Grains.VBox,'Spacing',3); +setEllipse = uix.HBox('Parent',gui.panels.Grains.VBox,'Spacing',3); +textOrient = uix.HBox('Parent',gui.panels.Grains.VBox,'Spacing',3); +setOrient = uix.HBox('Parent',gui.panels.Grains.VBox,'Spacing',3); + +%% load GSD +gui.text_handles.gsd = uicontrol('Style','Text',... + 'Parent',getGSD,... + 'String','GSD',... + 'FontSize',myui.fontsize); +tstr = 'grain size distribution file'; +gui.edit_handles.gsdfile = uicontrol('Style','Edit',... + 'Parent',getGSD,... + 'String','...',... + 'Tag','grains_gsdfile',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on'); +tstr = 'Load GSD File.'; +gui.push_handles.LoadGSD = uicontrol('Style','pushbutton',... + 'Parent',getGSD,... + 'String','Load',... + 'Tag','Load',... + 'ToolTipString',tstr,... + 'FontSize',myui.fontsize,... + 'UserData',struct('Tooltipstr',tstr),... + 'Callback',@onPushLoadGSD); +set(getGSD,'Widths',[75 -1 50]); + +%% Grain Shape +gui.text_handles.shape = uicontrol('Style','Text',... + 'Parent',setShape,... + 'String','grain shape',... + 'FontSize',myui.fontsize); +% uix.Empty('Parent',setShape); +tstr = 'Choose grain shape.'; +gui.popup_handles.Shape = uicontrol('Style', 'Popup',... + 'Parent',setShape,... + 'String',{'sphere','ellipsoid'},... + 'Tag','shape',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'UserData',struct('Tooltipstr',tstr),... + 'Callback',@onPopupShape); +set(setShape,'Widths',[75 -1]); + +%% ellipse settings - axes +gui.text_handles.ellipsex = uicontrol('Style','Text',... + 'Parent',textEllipse,... + 'String','x-axis [-]',... + 'FontSize',myui.fontsize); +gui.text_handles.ellipsey = uicontrol('Style','Text',... + 'Parent',textEllipse,... + 'String','y-axis [-]',... + 'FontSize',myui.fontsize); +gui.text_handles.ellipsez = uicontrol('Style','Text',... + 'Parent',textEllipse,... + 'String','z-axis [-]',... + 'FontSize',myui.fontsize); + +tstr = 'Set ellipsoid axes ratios'; +gui.edit_handles.axesx = uicontrol('Style','Edit',... + 'Parent',setEllipse,... + 'String',sprintf('%4.3f',data.grains.axes(1)),... + 'Tag','grains_axesx',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.grains.axes(1) 0 1]),... + 'Callback',@onEditValue); +gui.edit_handles.axesy = uicontrol('Style','Edit',... + 'Parent',setEllipse,... + 'String',sprintf('%4.3f',data.grains.axes(2)),... + 'Tag','grains_axesy',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.grains.axes(2) 0 1]),... + 'Callback',@onEditValue); +gui.edit_handles.axesz = uicontrol('Style','Edit',... + 'Parent',setEllipse,... + 'String',sprintf('%4.3f',data.grains.axes(3)),... + 'Tag','grains_axesz',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.grains.axes(3) 0 1]),... + 'Callback',@onEditValue); +set(setEllipse,'Widths',[-1 -1 -1]); + +%% ellipse settings - orient +gui.text_handles.ellipse1 = uicontrol('Style','Text',... + 'Parent',textOrient,... + 'String','polar angle [deg]',... + 'FontSize',myui.fontsize); +gui.text_handles.ellipse2 = uicontrol('Style','Text',... + 'Parent',textOrient,... + 'String','azimuthal angle [deg]',... + 'FontSize',myui.fontsize); + +tstr = 'Set polar angle'; +gui.edit_handles.orientp = uicontrol('Style','Edit',... + 'Parent',setOrient,... + 'String',sprintf('%4.3f',data.grains.orient(1)),... + 'Tag','grains_orientp',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off'); +tstr = 'Set azimuthal angle'; +gui.edit_handles.orienta = uicontrol('Style','Edit',... + 'Parent',setOrient,... + 'String',sprintf('%4.3f',data.grains.orient(2)),... + 'Tag','grains_orienta',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off'); +set(setOrient,'Widths',[-1 -1]); + + +% Java Hack to adjust the text fields vertical alignment +jh = findjobj(gui.text_handles.gsd); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.shape); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.ellipsex); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.ellipsey); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.ellipsez); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.ellipse1); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.ellipse2); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/GPRGRAVEL/GPRGRAVEL_createPanelParameter.m b/GPRGRAVEL/GPRGRAVEL_createPanelParameter.m new file mode 100644 index 0000000..4bfc1e8 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createPanelParameter.m @@ -0,0 +1,329 @@ +function [gui,myui] = GPRGRAVEL_createPanelParameter(data,gui,myui) +%GPRGRAVEL_createPanelParameter creates "Domain" settings panel +% +% Syntax: +% [gui,myui] = GPRGRAVEL_createPanelParameter(gui,myui,data) +% +% Inputs: +% data - figure data structure +% gui - figure gui elements structure +% myui - individual GUI settings structure +% +% Outputs: +% gui +% myui +% +% Example: +% [gui,myui] = GPRGRAVEL_createPanelParameter(data,gui,myui) +% +% Other m-files required: +% findjobj.m +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% create all boxes +gui.panels.Params.VBox = uix.VBox('Parent', gui.panels.Params.main,... + 'Spacing',0,'Padding',0); + +% targetpbox = uix.HBox('Parent',gui.panels.Params.VBox,'Spacing',0); +% maskpbox = uix.HBox('Parent',gui.panels.Params.VBox,'Spacing',0); +% targetpanel = uipanel('Parent',targetpbox,'Title','Target'); +% maskpanel = uipanel('Parent',maskpbox,'Title','Masks'); +targetpanel = uipanel('Parent',gui.panels.Params.VBox,'Title','Target'); +surfacepanel = uipanel('Parent',gui.panels.Params.VBox,'Title','Surface'); +satprofilepanel = uipanel('Parent',gui.panels.Params.VBox,'Title','Saturation Profile'); +miscpanel = uipanel('Parent',gui.panels.Params.VBox,'Title','Misc'); +set(gui.panels.Params.VBox,'heights',[22*5+3*6+15 -1 22*3+3*5+12 -1]); + +%% Parameter - Target +targetvbox = uix.VBox('Parent', targetpanel,'Spacing',3,'Padding',3); +loadtarget = uix.HBox('Parent',targetvbox,'Spacing',3); +texttarget1 = uix.HBox('Parent',targetvbox,'Spacing',3); +edittarget1 = uix.HBox('Parent',targetvbox,'Spacing',3); +texttarget2 = uix.HBox('Parent',targetvbox,'Spacing',3); +edittarget2 = uix.HBox('Parent',targetvbox,'Spacing',3); + +% load target +gui.text_handles.usetarget = uicontrol('Style','Text',... + 'Parent',loadtarget,... + 'String','Target',... + 'FontSize',myui.fontsize); +tstr = 'grain size distribution file'; +gui.edit_handles.targetfile = uicontrol('Style','Edit',... + 'Parent',loadtarget,... + 'String','none',... + 'Tag','params_targetfile',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on'); +tstr = 'Load Target File.'; +gui.push_handles.LoadTarget = uicontrol('Style','pushbutton',... + 'Parent',loadtarget,... + 'String','Load',... + 'Tag','Load',... + 'ToolTipString',tstr,... + 'FontSize',myui.fontsize,... + 'UserData',struct('Tooltipstr',tstr),... + 'Callback',@onPushLoadTarget); +set(loadtarget,'Widths',[75 -1 50]); + +% target center point +gui.text_handles.targetx = uicontrol('Style','Text',... + 'Parent',texttarget1,... + 'String','cent-x [m]',... + 'FontSize',myui.fontsize); +gui.text_handles.targety = uicontrol('Style','Text',... + 'Parent',texttarget1,... + 'String','cent-y [m]',... + 'FontSize',myui.fontsize); +gui.text_handles.targetz = uicontrol('Style','Text',... + 'Parent',texttarget1,... + 'String','cent-z [m]',... + 'FontSize',myui.fontsize); + +tstr = 'Set target center point'; +gui.edit_handles.targetx = uicontrol('Style','Edit',... + 'Parent',edittarget1,... + 'String',sprintf('%4.3f',data.params.targetCenter(1)),... + 'Tag','params_targetCenterx',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.targetCenter(1) 0 10]),... + 'Callback',@onEditValue); +gui.edit_handles.targety = uicontrol('Style','Edit',... + 'Parent',edittarget1,... + 'String',sprintf('%4.3f',data.params.targetCenter(2)),... + 'Tag','params_targetCentery',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.targetCenter(2) 0 10]),... + 'Callback',@onEditValue); +gui.edit_handles.targetz = uicontrol('Style','Edit',... + 'Parent',edittarget1,... + 'String',sprintf('%4.3f',data.params.targetCenter(3)),... + 'Tag','params_targetCenterz',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.targetCenter(3) 0 10]),... + 'Callback',@onEditValue); +set(edittarget1,'Widths',[-1 -1 -1]); + +% target orientation +gui.text_handles.targetpol = uicontrol('Style','Text',... + 'Parent',texttarget2,... + 'String','polar angle [deg]',... + 'FontSize',myui.fontsize); +gui.text_handles.targetaz = uicontrol('Style','Text',... + 'Parent',texttarget2,... + 'String','azimuthal angle [deg]',... + 'FontSize',myui.fontsize); + +tstr = 'Set polar angle'; +gui.edit_handles.targetp = uicontrol('Style','Edit',... + 'Parent',edittarget2,... + 'String',sprintf('%4.3f',data.params.targetOrient(1)),... + 'Tag','params_targetOrientp',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.targetOrient(1) -180 180]),... + 'Callback',@onEditValue); +tstr = 'Set azimuthal angle'; +gui.edit_handles.targeta = uicontrol('Style','Edit',... + 'Parent',edittarget2,... + 'String',sprintf('%4.3f',data.params.targetOrient(2)),... + 'Tag','params_targetOrienta',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.targetOrient(2) -180 180]),... + 'Callback',@onEditValue); +set(edittarget2,'Widths',[-1 -1]); + +%% Parameter - Surface +surfacevbox = uix.VBox('Parent',surfacepanel,'Spacing',3,'Padding',3); +% textSurface = uix.HBox('Parent',surfacevbox,'Spacing',3); +setSurface = uix.HBox('Parent',surfacevbox,'Spacing',3); + +tstr = ['If activated, the surface is closed an no grain smaller
',... + 'than the threshold radius can stick out.']; +gui.radio_handles.closedSurface = uicontrol('Style','checkbox',... + 'Parent',setSurface,... + 'String','close surface',... + 'Tag','close_surface',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr),... + 'Callback',@onRadioSurface); + +tstr = ['Give threshold radius from which grains cannot stick out of an open surface.

',... + 'HINT: if the largest grain radius is given, the surface is closed for all grains.']; +gui.edit_handles.closeSurfaceR = uicontrol('Style','Edit',... + 'Parent',setSurface,... + 'String',sprintf('%d',data.params.closeSurfaceR),... + 'Tag','params_closeSurfaceR',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.closeSurfaceR 0 1]),... + 'Callback',@onEditValue); + +gui.text_handles.closedSurface = uicontrol('Style','Text',... + 'Parent',setSurface,... + 'String','thresh. radius [m]',... + 'FontSize',myui.fontsize); + +set(setSurface,'Widths',[-1 -1 -1]); + +%% Parameter - Saturation Profile +satprofilevbox = uix.VBox('Parent',satprofilepanel,'Spacing',3,'Padding',3); +setSatProfile = uix.HBox('Parent',satprofilevbox,'Spacing',3); +textSatProfile = uix.HBox('Parent',satprofilevbox,'Spacing',3); +editSatProfile = uix.HBox('Parent',satprofilevbox,'Spacing',3); + +tstr = 'If activated, one can select a saturation profile along z-direction.'; +gui.radio_handles.Satprofile = uicontrol('Style','checkbox',... + 'Parent',setSatProfile,... + 'String','saturation profile',... + 'Tag','useSatProfile',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr),... + 'Callback',@onRadioSatProfile); + +tstr = 'If activated, choose between linear and exponential saturation profile.'; +gui.popup_handles.SatProfileType = uicontrol('Style','popupmenu',... + 'Parent',setSatProfile,... + 'String',{'linear','exponential'},... + 'Tag','sat_profile_type',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr),... + 'Callback',@onPopupSatProfile); + +gui.text_handles.SatProfileTop = uicontrol('Style','Text',... + 'Parent',textSatProfile,... + 'String','saturation @ top [-]',... + 'FontSize',myui.fontsize); +gui.text_handles.SatProfileBottom = uicontrol('Style','Text',... + 'Parent',textSatProfile,... + 'String','saturation @ bottom [-]',... + 'FontSize',myui.fontsize); + +tstr = 'Saturation at top'; +gui.edit_handles.SatProfileTop = uicontrol('Style','Edit',... + 'Parent',editSatProfile,... + 'String',sprintf('%d',data.params.satBounds(1)),... + 'Tag','params_satProfileTop',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.satBounds(1) 0 1]),... + 'Callback',@onEditValue); +tstr = 'Saturation at bottom'; +gui.edit_handles.SatProfileBottom = uicontrol('Style','Edit',... + 'Parent',editSatProfile,... + 'String',sprintf('%d',data.params.satBounds(2)),... + 'Tag','params_satProfileBottom',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.satBounds(2) 0 1]),... + 'Callback',@onEditValue); + +%% Parameter - Misc +miscvbox = uix.VBox('Parent',miscpanel,'Spacing',3,'Padding',3); + +% RNG +miscRNG = uix.HBox('Parent',miscvbox,'Spacing',3); + +tstr = ['If activated, one can enter an arbitrary RNG seed value so that always the same packing is created.']; +gui.radio_handles.customRNG = uicontrol('Style','checkbox',... + 'Parent',miscRNG,... + 'String','fix RNG seed',... + 'Tag','fixRNGseeed',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','on',... + 'UserData',struct('Tooltipstr',tstr),... + 'Callback',@onRadioFixRNG); + +tstr = ['Enter a custom RNG seed value.']; +gui.edit_handles.customRNG = uicontrol('Style','Edit',... + 'Parent',miscRNG,... + 'String',sprintf('%d',data.params.customRNGSEED),... + 'Tag','params_customRNGSEED',... + 'TooltipString',tstr,... + 'FontSize',myui.fontsize,... + 'Enable','off',... + 'UserData',struct('Tooltipstr',tstr,'defaults',[data.params.customRNGSEED 0 1e12]),... + 'Callback',@onEditValue); + +gui.text_handles.customRNG = uicontrol('Style','Text',... + 'Parent',miscRNG,... + 'String','RNG seed',... + 'FontSize',myui.fontsize); + +set(miscRNG,'Widths',[-1 -1 -1]); + + +%% Java Hack to adjust the text fields vertical alignment +jh = findjobj(gui.text_handles.usetarget); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.targetx); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.targety); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.targetz); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.targetpol); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.targetaz); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.closedSurface); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.SatProfileTop); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.SatProfileBottom); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) +jh = findjobj(gui.text_handles.customRNG); +jh.setVerticalAlignment(javax.swing.JLabel.CENTER) + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/GPRGRAVEL/GPRGRAVEL_createStatusbar.m b/GPRGRAVEL/GPRGRAVEL_createStatusbar.m new file mode 100644 index 0000000..f37ca03 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_createStatusbar.m @@ -0,0 +1,97 @@ +function [gui,myui] = GPRGRAVEL_createStatusbar(gui,myui) +%GPRGRAVEL_createStatusbar creates the bottom status bar +% +% Syntax: +% [gui,myui] = GPRGRAVEL_createStatusbar(gui,myui) +% +% Inputs: +% gui - figure gui elements structure +% myui - individual GUI settings structure +% +% Outputs: +% gui +% myui +% +% Example: +% [gui,myui] = GPRGRAVEL_createStatusbar(gui,myui) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% create panels inside the bottom hbox to show persistent status +% information +gui.panels.status.main = uix.Panel('Parent',gui.bottom); +gui.panels.status.Timer = uix.Panel('Parent',gui.bottom); +gui.panels.status.Masks = uix.Panel('Parent',gui.bottom); +gui.panels.status.Targets = uix.Panel('Parent',gui.bottom); +gui.panels.status.SatProfile = uix.Panel('Parent',gui.bottom); +gui.panels.status.Version = uix.Panel('Parent',gui.bottom); + +% adjust the panel widths +set(gui.bottom,'Widths',[300 -1 -1 -1 -1 -1]); + +gui.text_handles.Status = uicontrol('Style','Text',... + 'Parent',gui.panels.status.main,... + 'String','',... + 'HorizontalAlignment','left',... + 'FontSize',8); +gui.text_handles.TimerStat = uicontrol('Style','Text',... + 'Parent',gui.panels.status.Timer,... + 'String','Calc. Time: 0 s',... + 'HorizontalAlignment','left',... + 'FontSize',8); +gui.text_handles.Surface = uicontrol('Style','Text',... + 'Parent',gui.panels.status.Masks,... + 'String','SURFACE: OPEN',... + 'HorizontalAlignment','left',... + 'FontSize',8); +gui.text_handles.Targets = uicontrol('Style','Text',... + 'Parent',gui.panels.status.Targets,... + 'String','TARGETS: OFF',... + 'HorizontalAlignment','left',... + 'FontSize',8); +gui.text_handles.SatProf = uicontrol('Style','Text',... + 'Parent',gui.panels.status.SatProfile,... + 'String','SATURATION Profile: OFF',... + 'HorizontalAlignment','left',... + 'FontSize',8); +gui.text_handles.VersionStat = uicontrol('Style','Text',... + 'Parent',gui.panels.status.Version,... + 'String','Version: ',... + 'HorizontalAlignment','left',... + 'FontSize',8); + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/GPRGRAVEL/GPRGRAVEL_loadDefaults.m b/GPRGRAVEL/GPRGRAVEL_loadDefaults.m new file mode 100644 index 0000000..2fdd4f6 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_loadDefaults.m @@ -0,0 +1,224 @@ +function data = GPRGRAVEL_loadDefaults +%GPRGRAVEL_loadDefaults loads default GUI data values +% +% Syntax: +% GPRGRAVEL_loadDefaults +% +% Inputs: +% none +% +% Outputs: +% out - default data structure +% +% Example: +% out = GPRGRAVEL_loadDefaults +% +% Other m-files required: +% none +% +% Subfunctions: +% getInitData +% getMonitordata +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% aux data +data.info.ToolTips = 1; +data.info.Timer = 0; + +% get init data +% Note to user: use the "getInitData" function to adjust default +% settings and parameter range +init = getInitData; +data.init = init; + +% domain data +data.domain = init.domain; +data.domain.xm = data.domain.xm(1); +data.domain.ym = data.domain.ym(1); +data.domain.zm = data.domain.zm(1); +data.domain.dx = data.domain.dx(1); + +data.domain.VolSpeciesAIR = data.domain.VolSpeciesAIR(1); +data.domain.VolSpeciesH2O = data.domain.VolSpeciesH2O(1); +data.domain.VolSpeciesMTX = data.domain.VolSpeciesMTX(1); +data.domain.porosity = data.domain.porosity(1); + +% grains data +data.grains = init.grains; + +% params data +data.params = init.params; + +% monitor data during calculation +data.monitor = init.monitor; + +end + +% define init values and range +function init = getInitData +% domain dimensions in [m] +init.domain.xm = [0.3 1e-3 1e2]; +init.domain.ym = [0.3 1e-3 1e2]; +init.domain.zm = [0.3 1e-3 1e2]; +% domain discretization in [m] +init.domain.dx = [0.002 1e-4 1e-1]; % [2 mm] + +% epsilon values of the species used +init.domain.dkSpeciesAIR = 1; +init.domain.dkSpeciesMTX = 8.12; +init.domain.dkSpeciesH2O = 80; + +% give volumetric ratios of air, matrix and water +% Mikrit_dct (dkRock = 8.12, dkBulk = 7.90) +% air: 18.55 % | water: 5.00 % | grain: 76.45 % -> phi= 23.55 % +init.domain.VolSpeciesAIR = [30/100 0 1]; +init.domain.VolSpeciesH2O = [20/100 0 1]; +init.domain.VolSpeciesMTX = [50/100 0 1]; +% resulting porosity +init.domain.porosity = [init.domain.VolSpeciesAIR+init.domain.VolSpeciesH2O 0 1]; + +% grain shape ('sphere' or 'ellipse') +init.grains.shape = 'sphere'; +% in case of 'ellipse' give the main radii ratios (x,y,z) +init.grains.axes = [1 0.8 0.6]; +init.grains.axes = init.grains.axes./max(init.grains.axes); % normalized +% phi and theta angles to orient the ellipse +init.grains.orient = [0 0]; + +% use mask(s) +init.params.use_mask = true; +% create a 1-voxel margin on the outside of the inner volume +% if no grain fractions shall be located outside the inner volume +init.params.applyMarginMask = false; +% surface dip in x and y direction +init.params.maskdipx = 0; +init.params.maskdipy = 0; + +% use taget(s) +init.params.useTarget = false; +% target center point +init.params.targetCenter = [init.domain.xm(1)/2 init.domain.ym(1)/2 init.domain.zm(1)/2]; +% phi and theta angles to orient the target +init.params.targetOrient = [0 0]; + +% saturation profile (you can switch it on/off here) +init.params.useSatProfile = false; +init.params.satProfileType = 'linear'; +init.params.satBounds = [0 1]; + +% RNG +init.params.use_customRNG = false; +init.params.customRNGSEED = 123456781; + +% outpout MASKS values +ID_MASKED.Air.Lr = 0; +ID_MASKED.Water.Lr = 99; +ID_MASKED.PML.Lr = 999; +ID_MASKED.Target.Lr = 9999; +ID_MASKED.Air.M5 = 0; +ID_MASKED.Margin.Lr = -1; +ID_MASKED.Matrix.M5 = 1; +ID_MASKED.Water.M5 = 2; +ID_MASKED.PML.M5 = 3; +ID_MASKED.Target.M5 = 4; +ID_MASKED.Margin.M5 = 0; +init.params.ID_MASKED = ID_MASKED; + +% misc parameters +init.params.boolOmitLn = true; % save RAM, do not create Ln matrix +init.params.visualizePacking = false; + +% define porosity at (below) which new grains must touch with existing ones +init.params.requireTouch.por = 0.75; +% define number of voxels that are required +init.params.requireTouch.nVox = 5; + +% every grain smaller than this is not allowed to stick out of +% the surface +init.params.closeSurface = false; +init.params.closeSurfaceR = 0.0099; + +% info dump interval +init.params.dump = 100; % just for backward compatibility +init.params.dumpsPerBin = 10; +init.params.dumpSec = 60; +init.params.updateVisualSec = 120; + +% export options +init.params.exportMAT = true; +init.params.exportH5 = true; +init.params.exportPML = true; +init.params.PMLduplicate = false; +init.params.PMLtruncate = false; +init.params.pml_w = [10,10,50]; + +init.monitor = getMonitordata; + +end + +function monitor = getMonitordata() + +monitor = struct(... + 'nVox',0,... % voxel in current bin + 'nLstVox',0,... % number of voxel in last iteration + 'nVoxAim',0,... % number of voxels to generate in current bin + 'por_cur',0,... % current porosity + 'poro_final',0,... % target porostiy + 'nBin',0,... % total number of bins + 'i',0,... % number of current bin + 'rbin',0,... % grain size of current bin + 'xyzr0',0,... % list of grain centers + 'stat',0,... % statistic structure variable + 'threshMaxTry',0,... % threshold to stop grain packing + 'nMinTouch',1,... % number of voxels for touching grains criterion + 'boolMustTouch',0,... % grains must be placed next to existing ones + 'boolDrawFromGrainList',0,... % grain center positions are drawn from list of vacant positons + 'n',0,... % number of iterations + 'nxyzr0',0,... % buffer size of grain center position list + 'iSwapListBox',0,... % counter for swapping placing method + 'nSwapListBoxMax',0,... % threshold for swapping + 'iRandPos',0,... % counter for random positons + 'nRandPos',0,... % total number of random positions + 'arrPackVel',0,... % current packing velocity + 't1',0,... % timestamp + 'velPackMax',0,... % maximal packing velocity + 'arrFailStat',0,... % statistic of failed grain placing + 'params',0,... % params structure variable + 'paramVerbose',true,... % paramVerbose structure variable + 'domainVOL0',0,... % total number of voxel positions in volume + 'domainVOL0matrix',0,... % total number of matrix voxel to generate + 'binStat',0,... % verbose plot: grain size bins + 'voxHist',0,... % verbose plot: placed voxels + 'log',0 ... % log + ); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/GPRGRAVEL/GPRGRAVEL_setPositionOnScreen.m b/GPRGRAVEL/GPRGRAVEL_setPositionOnScreen.m new file mode 100644 index 0000000..eaaffb1 --- /dev/null +++ b/GPRGRAVEL/GPRGRAVEL_setPositionOnScreen.m @@ -0,0 +1,81 @@ +function pos = GPRGRAVEL_setPositionOnScreen +%GPRGRAVEL_setPositionOnScreen sets GUI position depending on monitor size +% +% Syntax: +% GPRGRAVEL_setPositionOnScreen +% +% Inputs: +% none +% +% Outputs: +% pos - four element vector [x y w h] +% +% Example: +% GPRGRAVEL_setPositionOnScreen +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get the monitor layout +scr = get(0,'MonitorPosition'); +if size(scr,1) > 1 % dual monitor setup + ind = find(scr(:,1)==1 & scr(:,2)==1); + sw = scr(ind,3); % width + sh = scr(ind,4); % height +else % single monitor + sw = scr(3); % width + sh = scr(4); % height +end +% maximal initial GUI width +gw = 1024; +% adjust the GUI width if the screen is not wide enough +if sw < 1024 + gw = 2*sw/3; +end +% GUI height +gh = gw/1.45; + +if numel(scr) > 4 % dual monitor position + % GUI on second screen + if any(scr(:,1)<0) + pos = [-sw+(sw-gw)/2 (sh-gh)/2 gw gh]; + else + pos = [sw+(sw-gw)/2 (sh-gh)/2 gw gh]; + end +else % single monitor position + pos = [(sw-gw)/2 (sh-gh)/2 gw gh]; +end + +end +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/README.md b/README.md new file mode 100644 index 0000000..a8e61b9 --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ +## GPRGRAVEL + +GPRGRAVEL icon + +A simple **GPR** **GRAVEL** generator + +- - - + +### Table of Contents +1. [About](#about) +2. [Requirements](#requirements) +3. [Installation](#installation) +4. [Usage](#usage) +5. [ToDo](#todo) +6. [Cite as & References](#references) +7. [Changelog](CHANGELOG.md) + +- - - + +### About + +**GPRGRAVEL** is a set of MATLABTM tools to generate grain (gravel) "packings" to be used with 3D FDTD GPR simulations. The "packings" are created based on user defined grain size distributions. Please note that **GPRGRAVEL** creates a "packing" by randomly placing grains at arbitrary positions inside a given container. No gravimetric settlement of the grains is applied. + +#### Basic features: +1. Choose between different grain shapes (*Sphere* or *Ellipsoid*) +2. Set a desired porosity and corresponding water and air fractions +3. Place an object (target) into the domain +4. Set a water saturation profile (*linear* or *exponential*) +5. etc. + +GPRGRAVEL + +- - - + +### Requirements + +In order to work properly you need to meet the following requirements: + +1. The [Mathworks](https://www.mathworks.com) MATLABTM software development environment (tested with R2019a and newer) +2. The GUI Layout Toolbox (get it from [FEX](https://de.mathworks.com/matlabcentral/fileexchange/47982-gui-layout-toolbox)) (required) +3. `findjobj` (get it from [FEX](https://de.mathworks.com/matlabcentral/fileexchange/14317-findjobj-find-java-handles-of-matlab-graphic-objects)) (required) +4. `VoxelSurf` (get it from [FEX](https://de.mathworks.com/matlabcentral/fileexchange/66204-voxelsurf)) (optional) + +#### Operating System + +I tested it successfully under Windows 7 (64bit) and 10 (64bit) with Matlab R2019a and newer. Always with the latest version of the GUI Layout Toolbox (current version is afaik v2.3.5) + +**NOTE:** So far I did not test anything on Linux or a Mac. If you get it to work on either of the two systems (which it basically should I guess) please let me know. + +- - - + +### Installation + +1. It is recommended to install the GUI Layout Toolbox directly into MATLABTM via the mltbx-file (but it should also work via the old-school way of adding the toolbox folders to the MATLABTM path) +2. To use **GPRGRAVEL** you just need to place the `GPRGRAVEL` folder from the git repository on your hard drive and use the start script `startGPRGRAVEL` (within this script all necessary **GPRGRAVEL** folders are added to the MATLABTM path) + +- - - + +### Usage + +1. By executing the start script (see above) +2. Simply type `GPRGRAVEL` on the MATLABTM prompt (make sure the `GPRGRAVEL` folder is on the MATLABTM path) +3. Check the example scripts for the usage of the core functions without the GUI (inside the `scripts` folder) + +- - - + +### ToDo + +In no particular order and without guarantee that it will ever happen :-) : + +1. Add some more auxiliary options to the *Parameter* panel +2. Give the different export options via the GUI itself +3. Finalize the menu import/export routines +4. ... + + +- - - + +### Cite as +If you use GPRGRAVEL for your research, please cite it as: + +Thomas Hiller. (2023, July 14). ThoHiller/gprgravel: v0.1.0 (Version v0.1.0). GitHub. [https://github.com/ThoHiller/gprgravel] + +Note: This repository will be made available via Zenodo and will have a citable DOI. Even though the version number might change due to updates, this DOI is permanent (represents all versions) and always links to the latest version. + + +### References +1. Stadler, S., Schennen, S., Hiller, T. and Igel, J., "Realistic Simulation of GPR for Landmine and IED Detection Including Antenna Models, Soil Dispersion and Heterogeneity", Near Surface Geophysics (*submitted*), 2023. + +- - - +

MATLAB is a registered trademark of The Mathworks, Inc.

\ No newline at end of file diff --git a/callbacks/edits/onEditValue.m b/callbacks/edits/onEditValue.m new file mode 100644 index 0000000..2d8d398 --- /dev/null +++ b/callbacks/edits/onEditValue.m @@ -0,0 +1,231 @@ +function onEditValue(src,~) +%onEditValue updates all edit field values, checks for wrong inputs and +%restores a default value if necessary +% +% Syntax: +% onEditValue(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onEditValue(src) +% +% Other m-files required: +% +% Subfunctions: +% createDataString +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + + % get the value of the field + val = str2double(get(src,'String')); + % get the tag of the edit field + tag = get(src,'Tag'); + % get the user data of the field + ud = get(src,'UserData'); + + % get the default values [default min max] + defaults = ud.defaults; + + % check if the value is numeric + % if not reset to defaults stored in user data + if isnan(val) + set(src,'String',num2str(defaults(1))); + val = str2double(get(src,'String')); + end + % check if the value is out of bounds + % if yes reset to default + if val < defaults(2) || val > defaults(3) + set(src,'String',num2str(defaults(1))); + val = str2double(get(src,'String')); %#ok<*NASGU> + end + + % get the data field to update from the field tag + out = createDataString(tag); + % update the corresponding data field + updstr = [out.updstr,'=val;']; + eval(updstr); + + % update the data inside the GUI + setappdata(fig,'data',data); + + % depending on the particular edit field, further actions are + % necessary + switch tag + % ----------------------------------------------------------------- + % --- DOMAIN ------------------------------------------------------ + % ----------------------------------------------------------------- + case {'domain_xm','domain_ym','domain_zm'} + plotDomaindata(fig); + + case 'domain_porosity' + % if porosity is changed adjust matrix fraction and water + % fraction accordingly + mat = data.domain.VolSpeciesMTX; + air = data.domain.VolSpeciesAIR; + wat = data.domain.VolSpeciesH2O; + if val < air + val = air; + mat = 1 - val; + wat = val - air; + data.domain.porosity = val; + set(gui.edit_handles.porosity,'String',sprintf('%4.3f',val)); + else + mat = 1 - val; + wat = val - air; + end + data.domain.VolSpeciesMTX = mat; + data.domain.VolSpeciesH2O = wat; + set(gui.edit_handles.volmtx,'String',sprintf('%4.3f',mat)); + set(gui.edit_handles.volh2o,'String',sprintf('%4.3f',wat)); + + case 'domain_VolSpeciesAIR' + % if air fraction is changed adjust water fraction accordingly + por = data.domain.porosity; + wat = data.domain.VolSpeciesH2O; + if val > por + val = por; + wat = por - val; + data.domain.VolSpeciesAIR = val; + set(gui.edit_handles.volair,'String',sprintf('%4.3f',val)); + else + wat = por - val; + end + data.domain.VolSpeciesH2O = wat; + set(gui.edit_handles.volh2o,'String',sprintf('%4.3f',wat)); + + % ------------------------------------------------------------- + % --- GRAINS -------------------------------------------------- + % ------------------------------------------------------------- + case 'grains_axesx' + data.grains.axes(1) = val; + case 'grains_axesy' + data.grains.axes(2) = val; + case 'grains_axesz' + data.grains.axes(3) = val; + + % ------------------------------------------------------------- + % --- PARAMS -------------------------------------------------- + % ------------------------------------------------------------- + case {'params_targetCenterx','params_targetCentery',... + 'params_targetCenterz','params_targetOrientp',... + 'params_targetOrienta'} + data.params.targetCenterOld = data.params.targetCenter; + data.params.targetOrientOld = data.params.targetOrient; + switch tag + case 'params_targetCenterx' + data.params.targetCenter(1) = val; + case 'params_targetCentery' + data.params.targetCenter(2) = val; + case 'params_targetCenterz' + data.params.targetCenter(3) = val; + case 'params_targetOrientp' + data.params.targetOrient(1) = val; + case 'params_targetOrienta' + data.params.targetOrient(2) = val; + end + % update the data inside the GUI + setappdata(fig,'data',data); + % move target + data = setTargetPosition(data); + % update the data inside the GUI + setappdata(fig,'data',data); + % update plot + plotDomaindata(fig); + + case 'params_maskdipx' + % maximum angle until surface touches bottom in x-direction + a = atand(data.domain.zm/data.domain.xm); + if a > val + data.params.maskdipx = val; + else + data.params.maskdipx = a; + set(gui.edit_handles.maskdipx,'String',sprintf('%4.2f',a)); + end + % update the data inside the GUI + setappdata(fig,'data',data); + plotDomaindata(fig); + + case 'params_maskdipy' + % maximum angle until surface touches bottom in y-dircetion + b = atand(data.domain.zm/data.domain.ym); + if b > val + data.params.maskdipy = val; + else + data.params.maskdipy = b; + set(gui.edit_handles.maskdipy,'String',sprintf('%4.2f',b)); + end + % update the data inside the GUI + setappdata(fig,'data',data); + plotDomaindata(fig); + + case {'params_satProfileTop','params_satProfileBottom'} + id = findobj('Tag','params_satProfileTop'); + data.params.satBounds(1) = str2double(get(id,'String')); + id = findobj('Tag','params_satProfileBottom'); + data.params.satBounds(2) = str2double(get(id,'String')); + end + + % update GUI data + setappdata(fig,'data',data); +else + warndlg({'onEditValue:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%% helper function to create the update string +function out = createDataString(tag) +% find the underscore +ind = strfind(tag,'_'); +% the panel name is before the underscore +out.panel = tag(1:ind(1)-1); +% the field name afterwards +out.field = tag(ind(1)+1:end); +% replace the underscore with a dot +tag(ind) = '.'; +% create the update string +out.updstr = ['data.',tag]; + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/menus/onMenuExport.m b/callbacks/menus/onMenuExport.m new file mode 100644 index 0000000..4cd9c30 --- /dev/null +++ b/callbacks/menus/onMenuExport.m @@ -0,0 +1,89 @@ +function onMenuExport(src,~) +%onMenuExport handles the extra menu entries +% +% Syntax: +% onMenuExport(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onMenuExport(src) +% +% Other m-files required: +% switchToolTips +% updateStatusInformation +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data +% gui = getappdata(fig,'gui'); +% data = getappdata(fig,'data'); +% +% % gather the output data to save +% savedata.data = data; +% savedata.myui = gui.myui; + +% % session file name +% sfilename = 'GPRGRAVEL'; +% +% % ask for folder and maybe new name +% [sfile,spath] = uiputfile('*.mat',... +% 'Save session file',... +% fullfile(pwd,[sfilename,'.mat'])); +% +% % if user didn't cancel save session +% if sum([sfile spath]) > 0 +% save(fullfile(spath,sfile),'savedata'); +% clear savedata; +% % display info text +% set(gui.text_handles.Status,'String','GPRGRAVEL session successfully saved.'); +% else +% % display info text +% set(gui.text_handles.Status,'String','GPRGRAVEL session not saved'); +% end + +else + warndlg({'onMenuExport:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/menus/onMenuHelp.m b/callbacks/menus/onMenuHelp.m new file mode 100644 index 0000000..7e78b9e --- /dev/null +++ b/callbacks/menus/onMenuHelp.m @@ -0,0 +1,143 @@ +function onMenuHelp(src,~) +%onMenuHelp shows the Help Information +% +% Syntax: +% onMenuHelp(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onMenuHelp(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + + + % GPRGRAVEL logo + mylogo = load('gprgravellogo.mat','logo'); + + % header info + header{1,1} = 'GPRGRAVEL:'; + header{end+1,1} = ' '; + header{end+1,1} = ['author: ',gui.myui.author]; + header{end+1,1} = ' '; + header{end+1,1} = ['version: ',gui.myui.version]; + header{end+1,1} = ' '; + header{end+1,1} = ['date: ',gui.myui.date]; + header{end+1,1} = ' '; + + % info text + info{1,1} = ['GPRGRAVEL is a set of MATLAB tools, that allow some basic',... + ' creation of heterogeneous gravel/sand "packings" to be used with 3D FDTD GPR',... + ' simulations.',... + ' Note that a "packing" is created by randomly placing grains',... + ' at arbitrary positions. No gravimetric settlement of the grains is',... + ' applied.']; + info{end+1,1} = ' '; + info{end+1,1} = 'Have Fun!'; + + % get BLOCHUS GUI position + posf = get(fig,'Position'); + % default widht and height of About Figure + ww = 560; hh = 420; + xp = posf(1) + (posf(3)-ww)/2; + yp = posf(2) + (posf(4)-hh)/2; + % create Figure + hf = figure('Name','About GPRGRAVEL',... + 'NumberTitle','off','Tag','Help','ToolBar','none','MenuBar','none',... + 'Resize','off','Position',[xp yp ww hh],'Visible','off'); + v1 = uix.VBox('Parent',hf,'Padding',10,'Spacing',10); + + % text area + h1 = uix.VBox('Parent',v1); + % button area + h2 = uix.HBox('Parent',v1); + set(v1,'Heights',[-1 30]); + + % text area + h3 = uix.HBox('Parent',h1); + % logo area + h4 = uix.HBox('Parent',h1); + set(h1,'Heights',[-1 -1]); + + % close button at the bottom + uix.Empty('Parent',h2); + p1 = uicontrol('Style','pushbutton','Parent',h2,'String','OK',... + 'FontSize',10,'Callback','closereq()'); + uix.Empty('Parent',h2); + set(h2,'Widths',[-1 50 -1]) + + % header + uix.Empty('Parent',h3); + t1 = uicontrol('Style','Text','Parent',h3,'String',header,... + 'FontSize',10,'HorizontalAlignment','left'); + % logo + c1 = uicontainer('Parent',h3); + ax1 = axes('Parent',c1); + imshow(mylogo.logo,'Parent',ax1); + set(h3,'Widths',[50 -1 -1]); + + % info text + uix.Empty('Parent',h4); + t2 = uicontrol('Style','Text','Parent',h4,'String',info,... + 'FontSize',10,'HorizontalAlignment','left'); + uix.Empty('Parent',h4); + set(h4,'Widths',[20 -1 20]) + + % text hack + jh = findjobj(t1); + jh.setVerticalAlignment(javax.swing.JLabel.CENTER) + + % make the figure content visible + set(hf,'Visible','on'); + +else + warndlg({'onMenuHelp:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/menus/onMenuImport.m b/callbacks/menus/onMenuImport.m new file mode 100644 index 0000000..61d2437 --- /dev/null +++ b/callbacks/menus/onMenuImport.m @@ -0,0 +1,95 @@ +function onMenuImport(src,~) +%onMenuImport handles the extra menu entries +% +% Syntax: +% onMenuImport(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onMenuImport(src) +% +% Other m-files required: +% switchToolTips +% updateStatusInformation +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data +% gui = getappdata(fig,'gui'); +% data = getappdata(fig,'data'); +% +% % after the import these values should be strings +% Sessionpath = -1; +% Sessionfile = -1; +% % 'pathstr' hold s the name of the chosen data path +% [pathstr,~,~] = fileparts(pwd); +% % get the file name +% [Sessionfile,Sessionpath] = uigetfile(pathstr,... +% 'Choose GPRGRAVEL session file'); +% +% % only continue if user didn't cancel +% if sum(Sessionpath) > 0 +% % check if it is a valid session file +% tmp = load(fullfile(Sessionpath,Sessionfile),'savedata'); +% if isfield(tmp,'savedata') && isfield(tmp.savedata,'data') && ... +% isfield(tmp.savedata,'isPulse') && isfield(tmp.savedata,'isPrePol') +% savedata = tmp.savedata; +% +% % plot results (if any) +% if isfield(savedata.data,'results') +% plotResults(fig); +% end +% +% else +% helpdlg({'onMenuImport:';... +% 'This seems to be not a valid GPRGRAVEL session file'},... +% 'No session data found'); +% end +% end + +else + warndlg({'onMenuImport:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/menus/onMenuRestartQuit.m b/callbacks/menus/onMenuRestartQuit.m new file mode 100644 index 0000000..9c2e8cb --- /dev/null +++ b/callbacks/menus/onMenuRestartQuit.m @@ -0,0 +1,70 @@ +function onMenuRestartQuit(src,~) +%onMenuRestartQuit restarts or closes the GUI +% +% Syntax: +% onMenuRestartQuit(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onMenuRestartQuit(src) +% +% Other m-files required: +% BLOCHUS +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get the label (Restart / Quit) + label = get(src,'Label'); + % close the figure + close(fig); + % and restart if necessary + if strcmp(label,'Restart') + GPRGRAVEL; + end + +else + warndlg({'onMenuRestartQuit:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/menus/onMenuView.m b/callbacks/menus/onMenuView.m new file mode 100644 index 0000000..436f002 --- /dev/null +++ b/callbacks/menus/onMenuView.m @@ -0,0 +1,96 @@ +function onMenuView(src,~) +%onMenuView handles the extra menu entries +% +% Syntax: +% onMenuView(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onMenuView(src,~) +% +% Other m-files required: +% switchToolTips +% updateStatusInformation +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + + switch get(src,'Label') + case 'Tooltips' % switch on/off Tooltips + switch get(src,'Checked') + case 'on' % if it is on, switch it off +% switchToolTips(gui,'off'); + set(src,'Checked','off'); + data.info.ToolTips = 0; + case 'off' +% switchToolTips(gui,'on'); + set(src,'Checked','on'); + data.info.ToolTips = 1; + end + + case 'Figure Toolbar' % switch on/off the default Figure Toolbar + switch get(src,'Checked') + case 'on' % if it is on, switch it off + set(src,'Checked','off'); + viewmenufcn('FigureToolbar'); + case 'off' + set(src,'Checked','on'); + viewmenufcn('FigureToolbar'); + end + end + + % update GUI data + setappdata(fig,'gui',gui); + setappdata(fig,'data',data); + % update status bar +% updateStatusInformation(fig); + +else + warndlg({'onMenuView:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/menus/onMenuViewFigure.m b/callbacks/menus/onMenuViewFigure.m new file mode 100644 index 0000000..c343988 --- /dev/null +++ b/callbacks/menus/onMenuViewFigure.m @@ -0,0 +1,283 @@ +function onMenuViewFigure(src,~) +%onMenuViewFigure shows predefined figure layouts +% +% Syntax: +% onMenuViewFigure(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onMenuViewFigure(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + grains = data.grains; + domain = data.domain; + params = data.params; + + % get GUI position + posf = get(fig,'Position'); + % opening the export figure + % expfig = figure; + + % create the axes layout on the export figure and get the axes + % positions + switch get(src,'Label') + case 'Volume' + expfig = findobj('Tag','GPRGRAVELvolume'); + if isempty(expfig) + expfig = figure('Name','GPRGRAVEL: Volume',... + 'NumberTitle','off','Tag','GPRGRAVELvolume'); + set(expfig,'Position',[600 300 800 700]); + else + clf(expfig); + end + ax = axes('Parent',expfig); + + % get monitor data + Lr = data.domain.final{1}.Lr; + % remove grains smaller + threshR = 1e-3; + Lr(Lr. diff --git a/callbacks/popup/onPopupSatProfile.m b/callbacks/popup/onPopupSatProfile.m new file mode 100644 index 0000000..b4acd93 --- /dev/null +++ b/callbacks/popup/onPopupSatProfile.m @@ -0,0 +1,81 @@ +function onPopupSatProfile(src,~) +%onPopupSatProfile switches the saturation profileoptions between +%"linear" and "exponential" +% +% Syntax: +% onPopupSatProfile(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onPopupSatProfile(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + data = getappdata(fig,'data'); + + % get the popup menu entry + val = get(src,'Value'); + + % set the corresponding nucleus + switch val + case 1 + data.params.satProfileType = 'linear'; + case 2 + data.params.satProfileType = 'exponential'; + end + + % update the GUI data + setappdata(fig,'data',data); + % update status + updateStatusInformation(fig); + +else + warndlg({'onPopupSatProfile:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/popup/onPopupShape.m b/callbacks/popup/onPopupShape.m new file mode 100644 index 0000000..c8f93bb --- /dev/null +++ b/callbacks/popup/onPopupShape.m @@ -0,0 +1,89 @@ +function onPopupShape(src,~) +%onPopupShape switches the grain shape between "sphere" and "ellipse" +% +% Syntax: +% onPopupShape(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onPopupShape(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + + % get the popup menu entry + val = get(src,'Value'); + + % set the corresponding nucleus + switch val + case 1 + data.grains.shape = 'sphere'; + set(gui.edit_handles.axesx,'Enable','off'); + set(gui.edit_handles.axesy,'Enable','off'); + set(gui.edit_handles.axesz,'Enable','off'); + set(gui.edit_handles.orientp,'Enable','off'); + set(gui.edit_handles.orienta,'Enable','off'); + case 2 + data.grains.shape = 'ellipse'; + set(gui.edit_handles.axesx,'Enable','on'); + set(gui.edit_handles.axesy,'Enable','on'); + set(gui.edit_handles.axesz,'Enable','on'); + set(gui.edit_handles.orientp,'Enable','on'); + set(gui.edit_handles.orienta,'Enable','on'); + end + + % update the GUI data + setappdata(fig,'data',data); + +else + warndlg({'onPopupShape:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/push/onPushAxView.m b/callbacks/push/onPushAxView.m new file mode 100644 index 0000000..3c97f25 --- /dev/null +++ b/callbacks/push/onPushAxView.m @@ -0,0 +1,116 @@ +function onPushAxView(src,~) +%onPushAxView sets the view of axes plot to predefined sets +% +% Syntax: +% onPushAxView(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onPushAxView(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + % get button tag + str = get(src,'String'); + tag = get(src,'Tag'); + + switch tag + case {'domain','monitor'} + + switch tag + case 'domain' + ax = gui.axes_handles.domain; + case 'monitor' + ax = gui.axes_handles.Volume; + end + + switch str + case 'XZ' + axes(ax) + view([0 0]); + case 'YZ' + axes(ax) + view([90 0]); + case 'XY' + axes(ax) + view([0 90]); + case '3D' + axes(ax) + view([-35 30]); + end + + case 'slice' + data.params.showslice = str; + domain = data.domain; + % update GUI data + setappdata(fig,'data',data); + + switch str + case 'XZ' + set(gui.slider_handles.slider,'Min',1,'Max',domain.ny0,... + 'Value',1,'SliderStep',[1/(domain.ny0-1) 5/(domain.ny0-1)]) + case 'YZ' + set(gui.slider_handles.slider,'Min',1,'Max',domain.nx0,... + 'Value',1,'SliderStep',[1/(domain.nx0-1) 5/(domain.nx0-1)]) + case 'XY' + set(gui.slider_handles.slider,'Min',1,'Max',domain.nz0,... + 'Value',1,'SliderStep',[1/(domain.nz0-1) 5/(domain.nz0-1)]) + end + % update GUI data + setappdata(fig,'gui',gui); + % plot slice + plotSlicedata(fig,str,1); + end + +else + warndlg({'onPushAxView:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/push/onPushLoadGSD.m b/callbacks/push/onPushLoadGSD.m new file mode 100644 index 0000000..29beac1 --- /dev/null +++ b/callbacks/push/onPushLoadGSD.m @@ -0,0 +1,157 @@ +function onPushLoadGSD(src,~) +%onPushLoadGSD starts the import of a user provided GSD file +% +% Syntax: +% onPushLoadGSD(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onPushLoadGSD(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + grains = data.grains; + + % get the standard input path for GSD data if it is not already there + if ~isfield(grains,'GSDpath') + grains.GSDpath = fullfile(data.params.GPRGRAVELpath,'input','GSD'); + end + % get the file to open + [file,path] = uigetfile('.txt','Select the GSD file',grains.GSDpath); + grains.GSDpath = path; + grains.GSDfile = file; + % try to import the data + tmp = importdata(fullfile(grains.GSDpath,grains.GSDfile)); + + % if there is data, proceed + if ~isempty(tmp) + % IMPORTANT: + % if there is no header, assume the data is given as diameters in mm!!! + if isstruct(tmp) + header = tmp.colheaders{1}; + % get unit of data + ind = strfind(header,'#'); + unit = strtrim(header(ind+1:end)); + switch unit + case 'mm' + fac = 1000; + case 'cm' + fac = 100; + case 'm' + fac = 1; + end + tmpd = tmp.data; + else + % conversion factor from mm to m + fac = 1000; + tmpd = tmp; + end + + % assume it is a list of grain sizes + grains.ishistogram = false; + if size(tmpd,2) == 2 + % if not, it is a histogram CDF + grains.ishistogram = true; + end + + % save the data as radius in [m] + if grains.ishistogram + grains.hist_raw = tmpd; + % transform to radius in [m] + grains.hist_raw(:,1) = grains.hist_raw(:,1)/(2*fac); + % get maximum radius + grains.rmax = max(grains.hist_raw(:,1)); + else + % grain diameter in [mm] + dia = tmpd; + % transform to [m] + grains.dia_raw = dia/fac; + % transform to radius in [m] + grains.r_raw = dia/2/fac; + % get maximum radius + grains.rmax = max(grains.r_raw); + end + % update the GSD file name text fiedl + set(gui.edit_handles.gsdfile,'String',grains.GSDfile); + + % delete old voxelised GSD data + if isfield(grains,'binVol') + grains = rmfield(grains,'binVol'); + end + if isfield(grains,'VOLspheres') + grains = rmfield(grains,'VOLspheres'); + end + if isfield(grains,'rbins') + grains = rmfield(grains,'rbins'); + end + if isfield(grains,'nbins') + grains = rmfield(grains,'nbins'); + end + if isfield(grains,'Nbins') + grains = rmfield(grains,'Nbins'); + end + if isfield(grains,'nvoxBins') + grains = rmfield(grains,'nvoxBins'); + end + + % update GUI data + data.grains = grains; + setappdata(fig,'data',data); + % plot the GSD data + plotGSDdata(fig,'input'); + else + warndlg({'onPushLoadGSD:','Please provide grain size data.'},... + 'GPRGRAVEL error'); + end +else + warndlg({'onPushLoadGSD:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/push/onPushLoadTarget.m b/callbacks/push/onPushLoadTarget.m new file mode 100644 index 0000000..fc97e9e --- /dev/null +++ b/callbacks/push/onPushLoadTarget.m @@ -0,0 +1,135 @@ +function onPushLoadTarget(src,~) +%onPushLoadTarget starts the import of a user provided target file +% +% Syntax: +% onPushLoadTarget(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onPushLoadTarget(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + domain = data.domain; + params = data.params; + + % get the standard input path for target data if it is not already there + if ~isfield(params,'targetPath') + params.targetPath = fullfile(data.params.GPRGRAVELpath,'input','Targets'); + end + % get the file to open + [file,path] = uigetfile('.h5','Select the Target h5 file',params.targetPath); + params.targetPath = path; + params.targetFile = file; + % try to import the data + target = h5read(fullfile(params.targetPath,params.targetFile),'/data'); + + % if there is data, proceed + if ~isempty(target) && sum(target(:)) ~= 0 + % target successfully imported + params.useTarget = true; + + target = permute(target,[2 3 1]); + + % IMPORTANT: + % we assume the target grid resolution is 2mm! + [xt,yt,zt] = size(target); + xt = xt*0.002; + yt = yt*0.002; + zt = zt*0.002; + + centD = [domain.xm/2 domain.ym/2 domain.zm/2]; + centT = [xt/2 yt/2 zt/2]; + shift = centD-centT; + shift = floor(shift./domain.dx); + + szT = size(target); + params.targetDIM = szT; + target = target(:); + ind = 1:1:numel(target); ind = ind(:); + ind = ind(target>0); + target = target(target>0); + % set all targets to index 2 + target(:) = 2; + + [ixt,iyt,izt] = ind2sub(szT,ind); + ixt = ixt+shift(1); + iyt = iyt+shift(2); + izt = izt+shift(3); + params.target = target; + params.targetIDX = [ixt iyt izt]; + params.targetCenter = centD; + + % update the GSD file name text fiedl + set(gui.edit_handles.targetfile,'String',params.targetFile); + % activate control fields + set(gui.edit_handles.targetx,'Enable','on'); + set(gui.edit_handles.targety,'Enable','on'); + set(gui.edit_handles.targetz,'Enable','on'); + set(gui.edit_handles.targetp,'Enable','on'); + set(gui.edit_handles.targeta,'Enable','on'); + + % update GUI data + data.domain = domain; + data.params = params; + setappdata(fig,'data',data); + % plot the GSD data + plotDomaindata(fig); + % update status + updateStatusInformation(fig); + else + warndlg({'onPushLoadTarget:','Target data is empty. Check!'},... + 'GPRGRAVEL error'); + end +else + warndlg({'onPushLoadTarget:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/push/onPushRun.m b/callbacks/push/onPushRun.m new file mode 100644 index 0000000..9acf370 --- /dev/null +++ b/callbacks/push/onPushRun.m @@ -0,0 +1,161 @@ +function onPushRun(src,~) +%onPushRun starts the calculation +% +% Syntax: +% onPushRun(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onPushRun(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + data = getappdata(fig,'data'); + + % get data + grains = data.grains; + params = data.params; + domain = data.domain; + + % get the tag of the button + tag = get(src,'tag'); + + % time the calculation + t0 = tic; + switch tag + case 'INIT' % init domain + + % check if there is GSD data, otherwise we cannot start + if isfield(grains,'ishistogram') + + % init the domain box + [domain,params] = prepareDomain(domain,grains,params,src); + % init the voxelised grain size distribution + grains = prepareVoxelGSD(domain,grains,src); + + % update data + data.grains = grains; + data.domain = domain; + data.params = params; + setappdata(fig,'data',data); + + % plot voxelisd GSD + plotGSDdata(fig,'input'); + + % activate the RUN button + set(gui.push_handles.Run,'Enable','on'); + + % activate menu + set(gui.menu_handles.view_figures_voxelgrains,'Enable','on'); + + % init/reset the grid panel + % input GSD + set(gui.panels.Plot.grains,'Selection',1); + % 3D monitor view + onPushAxView(gui.push_handles.DLv); + set(gui.panels.Plot.result,'Selection',1); + clearSingleAxis(gui.axes_handles.Volume); + clearSingleAxis(gui.axes_handles.Slice); + clearSingleAxis(gui.axes_handles.ProfileAir); + clearSingleAxis(gui.axes_handles.ProfileH2O); + clearSingleAxis(gui.axes_handles.histOut); + + else + warndlg({'onPushRun:','LOAD GSD data first.'},... + 'GPRGRAVEL error'); + end + + case 'RUN' % run calculation + + % switch view to output GSD plot + set(gui.panels.Plot.grains,'Selection',2); + set(gui.panels.Plot.result,'Selection',1); + + % start placing the grains + [domain,grains,params] = placeGrains(domain,grains,params,data.monitor,src); + % update data + data.grains = grains; + data.domain = domain; + data.params = params; + setappdata(fig,'data',data); + + % now add the water + [domain,grains,params] = placeWater(domain,grains,params,src); + % update data + data.grains = grains; + data.domain = domain; + data.params = params; + setappdata(fig,'data',data); + + % plot results + onPushAxView(gui.push_handles.XZLs); + data = getappdata(fig,'data'); + plotProfiledata(fig); + + % activate menu + set(gui.menu_handles.view_figures_volume,'Enable','on'); + + % export results + [~,~,~] = exportData(domain,grains,params,src); + + end + + % time the calculation + data.info.Timer = toc(t0); + + % update GUI data + setappdata(fig,'data',data); + % update status bar + updateStatusInformation(fig); + +else + warndlg({'onPushRun:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/callbacks/radio/onRadioFixRNG.m b/callbacks/radio/onRadioFixRNG.m new file mode 100644 index 0000000..f02b946 --- /dev/null +++ b/callbacks/radio/onRadioFixRNG.m @@ -0,0 +1,78 @@ +function onRadioFixRNG(src,~) +%onRadioFixRNG activates/deactivates random seed value input +% +% Syntax: +% onRadioFixRNG +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onRadioFixRNG(src,~) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% get GUI handle and data +fig = ancestor(src,'figure','toplevel'); +gui = getappdata(fig,'gui'); +data = getappdata(fig,'data'); + +% on/off +val = get(src,'Value'); + +switch val + case 0 % off + data.params.use_customRNG = false; + data.params.customRNGSEED = data.init.params.customRNGSEED; + set(gui.edit_handles.customRNG,'String',sprintf('%d',data.params.customRNGSEED)); + set(gui.edit_handles.customRNG,'Enable','off'); + + case 1 % on + data.params.use_customRNG = true; + set(gui.edit_handles.customRNG,'String',sprintf('%d',data.params.customRNGSEED)); + set(gui.edit_handles.customRNG,'Enable','on'); +end + +% update GUI data +setappdata(fig,'data',data); +% update status +% updateStatusInformation(fig); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/callbacks/radio/onRadioSatProfile.m b/callbacks/radio/onRadioSatProfile.m new file mode 100644 index 0000000..cb23a5c --- /dev/null +++ b/callbacks/radio/onRadioSatProfile.m @@ -0,0 +1,86 @@ +function onRadioSatProfile(src,~) +%onRadioSatProfile activates/deactivates saturation profile option +% +% Syntax: +% onRadioSatProfile +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onRadioSatProfile(src,~) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% get GUI handle and data +fig = ancestor(src,'figure','toplevel'); +gui = getappdata(fig,'gui'); +data = getappdata(fig,'data'); + +% on/off +val = get(src,'Value'); + +switch val + case 0 % off + data.params.useSatProfile = false; + set(gui.popup_handles.SatProfileType,'Enable','off'); + + data.params.satBounds = [0 1]; + set(gui.edit_handles.SatProfileTop,'Enable','off',... + 'String',sprintf('%d',data.params.satBounds(1))); + set(gui.edit_handles.SatProfileBottom,'Enable','off',... + 'String',sprintf('%d',data.params.satBounds(2))); + + case 1 % on + data.params.useSatProfile = true; + set(gui.popup_handles.SatProfileType,'Enable','on'); + + set(gui.edit_handles.SatProfileTop,'Enable','on',... + 'String',sprintf('%d',data.params.satBounds(1))); + set(gui.edit_handles.SatProfileBottom,'Enable','on',... + 'String',sprintf('%d',data.params.satBounds(2))); +end + +% update GUI data +setappdata(fig,'data',data); +% update status +updateStatusInformation(fig); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/callbacks/radio/onRadioSurface.m b/callbacks/radio/onRadioSurface.m new file mode 100644 index 0000000..3e1dd3a --- /dev/null +++ b/callbacks/radio/onRadioSurface.m @@ -0,0 +1,82 @@ +function onRadioSurface(src,~) +%onRadioSurface activates/deactivates open surface +% +% Syntax: +% onRadioSurface +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onRadioSurface(src,~) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% get GUI handle and data +fig = ancestor(src,'figure','toplevel'); +gui = getappdata(fig,'gui'); +data = getappdata(fig,'data'); + +% on/off +val = get(src,'Value'); + +switch val + case 0 % off + data.params.closeSurface = false; + data.params.closeSurfaceR = 1; + set(gui.edit_handles.closeSurfaceR,'Enable','off'); + set(gui.edit_handles.closeSurfaceR,'String',sprintf('%4.3f',data.params.closeSurfaceR)); + + case 1 % on + data.params.closeSurface = true; + set(gui.edit_handles.closeSurfaceR,'Enable','on'); + if isfield(data.grains,'rmax') + data.params.closeSurfaceR = data.grains.rmax; + end + set(gui.edit_handles.closeSurfaceR,'Enable','on'); + set(gui.edit_handles.closeSurfaceR,'String',sprintf('%4.3f',data.params.closeSurfaceR)); +end + +% update GUI data +setappdata(fig,'data',data); +% update status +updateStatusInformation(fig); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/callbacks/slider/onSlider.m b/callbacks/slider/onSlider.m new file mode 100644 index 0000000..d9db18b --- /dev/null +++ b/callbacks/slider/onSlider.m @@ -0,0 +1,70 @@ +function onSlider(src,~) +%onSlider handles the slider callback for the Slider panel +% +% Syntax: +% onSlider(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% onSlider(src) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(src,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + data = getappdata(fig,'data'); + % get slider value + val = get(src,'Value'); + % update GUI data + setappdata(fig,'data',data); + % plot slice + plotSlicedata(fig,data.params.showslice,val); + +else + warndlg({'onPushAxView:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/exportData.m b/functions/exportData.m new file mode 100644 index 0000000..dc060e2 --- /dev/null +++ b/functions/exportData.m @@ -0,0 +1,396 @@ +function [domain,grains,params] = exportData(domain,grains,params,varargin) +%exportData export the results +% +% Syntax: +% [domain,grains,params] = exportData(domain,grains,params,varargin) +% +% Inputs: +% domain +% grains +% params +% varargin +% +% Outputs: +% domain +% grains +% params +% +% Example: +% [domain,grains,params] = exportData(domain,grains,params,varargin) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% check if called from GUI +isgui = false; +if nargin > 3 + src = varargin{1}; + % get GUI handle + fig = ancestor(src,'figure','toplevel'); + isgui = true; + % get GUI data + gui = getappdata(fig,'gui'); +else + gui = 0; +end + +%% INITIALIZE +% get the standard output path if it is not already there +if ~isfield(params,'EXPORTpath') + params.EXPORTpath = fullfile(params.GPRGRAVELpath,'output',datestr(now,'yyyymmdd_HHMM')); +end +if ~exist(params.EXPORTpath,'dir') + mkdir(params.EXPORTpath); +end + +%% Calculate summary of the results and export the model + +% get the model cubes +% Lr = domain.final{1}.Lr; -> voxels coded with grain size +% M = domain.final{1}.M; -> voxels boolean coded ean (0 = vacant, 1 = occupied) + +% refresh volumetric fractions +nVox_H2O = sum(domain.final{1}.Lr(domain.kEvalPoro) == params.ID_MASKED.Water.Lr); +nVox_air = sum(domain.final{1}.Lr(domain.kEvalPoro) == params.ID_MASKED.Air.Lr); +nVox_mtx = sum(domain.final{1}.M(domain.kEvalPoro))-nVox_H2O; + +final_vol.air = nVox_air/domain.VOL0; +final_vol.H2O = nVox_H2O/domain.VOL0; +final_vol.mtx = nVox_mtx/domain.VOL0; +domain.final_vol = final_vol; + +%% +if params.exportMAT + data.domain = domain; + data.grains = grains; + data.params = params; + fname = 'GPRGRAVEL.mat'; + + str1 = 'EXPORT - saving data to MAT file ... '; + str2 = 'EXPORT - saving data to MAT file ... done.'; + if isgui + set(gui.text_handles.Status,'String', str1); + else + disp(str1); + end + pause(0.01); + save(fullfile(params.EXPORTpath,fname),'data','-v7.3'); + if isgui + set(gui.text_handles.Status,'String', str2); + else + disp(str2); + end + pause(0.01); +end + +if params.exportH5 + + params.save_h5 = 'GPRGRAVEL_full.h5'; + + % check if a PML should be used + if params.exportPML + % boundary + marg = domain.marg; + % extra region to be cut out + if isfield(params,'cut') + marg1 = params.cut; + else + marg1 = [0 0 0]; + end + % container without boundaries except z+ + % uses Label matrix "Lr" for each radius bin + % M = domain.final{1}.Lr(marg+1:end-marg,marg+1:end-marg,marg+1:end); + kInnerX = marg+1+marg1(1):size(domain.final{1}.Lr,1)-marg-marg1(1); + kInnerY = marg+1+marg1(2):size(domain.final{1}.Lr,2)-marg-marg1(2); + kInnerZ = 1:size(domain.final{1}.Lr,3)-marg-marg1(2); + + if params.applyMarginMask + kInnerX = kInnerX(2:end-1); + kInnerY = kInnerY(2:end-1); + kInnerZ = kInnerZ(1:end-1); + end + + M = domain.final{1}.Lr(kInnerX,kInnerY,kInnerZ); + [nx,ny,nz] = size(M); + + % PML boundaries + if isfield(params,'pml_w') + pml_w = params.pml_w; + else + pml_w = 10; + end + + if length(pml_w) == 1 + pml_w = pml_w * ones(1,3); + end + % create container with PML boundaries (PML = 999) + %M_pml = 999*ones(nx+2*pml_w,ny+2*pml_w,nz+pml_w); + M_pml = 999*ones(nx+2*pml_w(1),ny+2*pml_w(2),nz+pml_w(3)); + + % fill z+ margin with air + M_pml(:,:,1:domain.marg) = 0; + + % account for masked regions in PML + cellMasks = params.masks; + nMask = numel(cellMasks); + + for iMask=1:nMask + curMask = params.masks{iMask}; + + if isfield(curMask,'arrTiltDegXY') + szPML = size(M_pml); + maxX = domain.dx*szPML(1); + maxY = domain.dx*szPML(2); + xPML = domain.dx*((1:szPML(2))-domain.marg+pml_w(2)); + yPML = domain.dx*((1:szPML(1))-domain.marg+pml_w(1)); + zPML = domain.dx*((1:szPML(3))-domain.marg+pml_w(3)); + [tmpY,tmpX,tmpZ] = meshgrid(xPML,yPML,zPML); + clear xPML yPML zPML + + arrSlope = curMask.arrTiltDegXY; + + if isfield(curMask,'zBaseMinTop') + zBase = curMask.zBaseMinTop+abs((maxX-curMask.arrBaseXYZ(1))*tan(arrSlope(1)*pi/180) + abs(maxY-curMask.arrBaseXYZ(2))*tan(arrSlope(2)*pi/180)); + curMask.arrBaseXYZ(3) = zBase; + end + arrBase = curMask.arrBaseXYZ; + + + tmpSel = tmpZ <= (arrBase(3)+(arrBase(1)-tmpX)*tan(arrSlope(1)*pi/180) + (arrBase(2)-tmpY)*tan(arrSlope(2)*pi/180)); + clear tmpZ tmpX tmpZ + + % mark masked region as air + M_pml(tmpSel) = 0; + + clear tmpSel; + end + end + + % copy the original container into the container with PMLs + M_pml(pml_w(1)+1:pml_w(1)+nx,pml_w(2)+1:pml_w(2)+ny,1:nz) = M; +% figure;imagesc(squeeze(M_pml(:,100,:)).');axis equal; + + if isfield(params,'PMLduplicate') + if params.PMLduplicate + % M_pml(1:pml_w,:,:) = repmat(M_pml(pml_w+1,:,:),[pml_w,1,1]); + % M_pml(pml_w+nx+1:end,:,:) = repmat(M_pml(pml_w+nx,:,:),[pml_w,1,1]); + % M_pml(:,1:pml_w,:) = repmat(M_pml(:,pml_w+1,:,:),[1,pml_w,1]); + % M_pml(:,pml_w+ny+1:end,:,:) = repmat(M_pml(:,pml_w+ny,:),[1,pml_w,1]); + % M_pml(:,:,nz+1:end)= repmat(M_pml(:,:,nz),[1,1,pml_w]); + kSelX = pml_w(1)+(1:nx); + kSelY = pml_w(2)+(1:ny); + M_pml(kSelX,kSelY,nz+1:end) = repmat(M_pml(kSelX,kSelY,nz),[1,1,pml_w(3)]); + end + end + + % create the HDF5 output container + % M5 = zeros(size(M_pml),'int16'); % all air + % M5(M_pml~=0) = 1; % mark matrix + % M5(M_pml==99) = 2; % mark water + % M5(M_pml==999) = 3; % mark PML + + M5 = zeros(size(M_pml),'int16'); % all air + M5(M_pml~=0) = 1; % mark matrix + M5(M_pml==params.ID_MASKED.Water.Lr) = params.ID_MASKED.Water.M5; % mark water + M5(M_pml==params.ID_MASKED.PML.Lr) = params.ID_MASKED.PML.M5; % mark PML + M5(M_pml==params.ID_MASKED.Target.Lr) = params.ID_MASKED.Target.M5; % mark Target + + if true + xScale = ((0:size(M5,1))-pml_w(1))*domain.dx; + yScale = ((0:size(M5,2))-pml_w(2))*domain.dx; + zScale = ((0:size(M5,3))-domain.marg)*domain.dx; + + hFigVerbose = figure('Name','hd5_preview'); + subplot(1,2,1); + imagesc(xScale,zScale,squeeze(M5(:,round(size(M5,2)/2),:)).'); + set(gca,'DataAspectRatio',[1 1 1],'YDir','normal'); + xlabel('x (m)'); + ylabel('z (m)'); + grid on; + + subplot(1,2,2); + imagesc(yScale,zScale,squeeze(M5(round(size(M5,1)/2),:,:)).'); + set(gca,'DataAspectRatio',[1 1 1],'YDir','normal'); + xlabel('y (m)'); + ylabel('z (m)'); + grid on; + savefig(hFigVerbose,fullfile(params.EXPORTpath,'hd5_exportPreview.fig')); + print(hFigVerbose,fullfile(params.EXPORTpath,'hd5_exportPreview.png'),'-dpng'); + end + + if isfield(params,'PMLtruncate') + if params.PMLtruncate + M5(:,:,nz+1:end) = []; + end + end + + [nx,ny,nz] = size(M5); + infostr1{1,1} = ['0 = Air (dk = ',sprintf('%6.4f',domain.dkSpeciesAIR),')']; + infostr1{2,1} = ['1 = Matrix (dk = ',sprintf('%6.4f',domain.dkSpeciesMTX),')']; + infostr1{3,1} = ['2 = H2O (dk = ',sprintf('%6.4f',domain.dkSpeciesH2O),')']; + + % calculate bulk dk for PML with CRIM + if isfield(domain,'final_vol') + dk_pml = getDK([domain.dkSpeciesAIR domain.dkSpeciesMTX domain.dkSpeciesH2O],... + [domain.final_vol.air domain.final_vol.mtx domain.final_vol.H2O]); + else + dk_pml = getDK([domain.dkSpeciesAIR domain.dkSpeciesMTX domain.dkSpeciesH2O],... + [domain.VolSpeciesAIR domain.VolSpeciesMTX domain.VolSpeciesH2O]); + end + params.dk_pml = dk_pml; + + infostr1{4,1} = ['3 = PML (dk = ',sprintf('%6.4f',dk_pml),')']; + if params.useTarget + infostr1{5,1} = ['4 = Target (dk = ',sprintf('%6.4f',dk_pml),')']; + end + + infostr2 = 'DIM inkl. PML'; + + % 19.04.22: replaced "nx-1" etc. with "nx" + % infostr3{1,1} = ['x ',sprintf('%3d',nx),' -> ',sprintf('%3d',nx-1),'*',... + % sprintf('%5.3f',domain.dx),' = ',sprintf('%4.2f',domain.dx*(nx-1)),'m']; + infostr3{1,1} = ['x ',sprintf('%3d',nx),' -> ',sprintf('%3d',nx),'*',... + sprintf('%5.3f',domain.dx),' = ',sprintf('%4.2f',domain.dx*(nx)),'m']; + infostr3{2,1} = ['y ',sprintf('%3d',ny),' -> ',sprintf('%3d',ny),'*',... + sprintf('%5.3f',domain.dx),' = ',sprintf('%4.2f',domain.dx*(ny)),'m']; + infostr3{3,1} = ['z ',sprintf('%3d',nz),' -> ',sprintf('%3d',nz),'*',... + sprintf('%5.3f',domain.dx),' = ',sprintf('%4.2f',domain.dx*(nz)),'m']; + else + % boundary + marg = domain.marg; + % container without boundaries except z+ + % uses Label matrix "Lr" for each radius bin + M = domain.final{1}.Lr(marg+1:end-marg,marg+1:end-marg,marg+1:end); + + % create the HDF5 output container + M5 = zeros(size(M),'int16'); % all air + M5(M~=0) = 1; % mark matrix + M5(M==99) = 2; % mark water + + if params.use_target + tdims = size(params.target); + + target = params.target; + target(target~=0) = 3; % mark target + % start point of target inside M (target ids always centered) + xstart = round(domain.marg + (domain.nx0-1-tdims(1))/2); + ystart = round(domain.marg + (domain.ny0-1-tdims(2))/2); + zstart = round(domain.marg + (domain.nz0-1-tdims(3))/2); + % place target into temp. M + M5(xstart:xstart+tdims(1)-1,ystart:ystart+tdims(2)-1,... + zstart:zstart+tdims(3)-1) = target; + end + + [nx,ny,nz] = size(M5); + infostr1{1,1} = ['0 = Air (dk = ',sprintf('%4.2f',domain.dkSpeciesAIR),')']; + infostr1{2,1} = ['1 = Matrix (dk = ',sprintf('%4.2f',domain.dkSpeciesMTX),')']; + infostr1{3,1} = ['2 = H2O (dk = ',sprintf('%4.2f',domain.dkSpeciesH2O),')']; + if params.use_target + infostr1{4,1} = ['3 = Target (dk = ',sprintf('%4.2f',domain.dkSpeciesAIR),')']; + end + + infostr2 = 'DIM'; + + infostr3{1,1} = ['x ',sprintf('%3d',nx),' -> ',sprintf('%3d',nx),'*',... + sprintf('%5.3f',domain.dx),' = ',sprintf('%4.2f',domain.dx*(nx)),'m']; + infostr3{2,1} = ['y ',sprintf('%3d',ny),' -> ',sprintf('%3d',ny),'*',... + sprintf('%5.3f',domain.dx),' = ',sprintf('%4.2f',domain.dx*(ny)),'m']; + infostr3{3,1} = ['z ',sprintf('%3d',nz),' -> ',sprintf('%3d',nz),'*',... + sprintf('%5.3f',domain.dx),' = ',sprintf('%4.2f',domain.dx*(nz)),'m']; + end + + params.arrDomainOut = domain.dx*size(M5); + + if length(domain.final) == 1 + % matrices without margin + Mp = domain.final{1}.Lr(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); + else + Mp = domain.final{2}.Lr; + end + + % calculate porosity (only of the interior box without any margin) + + ind0 = sum(Mp(:)==0); % air + ind99 = sum(Mp(:)==99); % water + % porosity = (ind0+ind99)/(numel(Mp)-domain.VOLmask); + porosity = (ind0+ind99)/(numel(domain.kEvalPoro)); + + if ~isfield(params,'boolPrelimExport') || ~params.boolPrelimExport + infostr4 = sprintf('Porosity = %4.3f%% (Aim: %4.3f%%)\n',porosity*100,domain.porosity*100); + infostr4 = [infostr4 sprintf('H2O = %4.3f%% (Aim: %4.3f%%)\n',100*[domain.final_vol.H2O,domain.VolSpeciesH2O])]; + infostr4 = [infostr4 sprintf('Matrix = %4.3f%% (Aim: %4.3f%%)\n',100*[domain.final_vol.mtx,domain.VolSpeciesMTX])]; + infostr4 = [infostr4 sprintf('Air = %4.3f%% (Aim: %4.3f%%)\n',100*[domain.final_vol.air,domain.VolSpeciesAIR])]; + + dk_AIM = getDK([domain.dkSpeciesAIR domain.dkSpeciesMTX domain.dkSpeciesH2O],... + [domain.VolSpeciesAIR domain.VolSpeciesMTX domain.VolSpeciesH2O]); + infostr4 = [infostr4 sprintf('\nDK = %6.4f (Aim: %6.4f)\n',params.dk_pml,dk_AIM)]; + else + infostr4 = 'prelim Export'; + end + + % export the HDF5 file + % flip z-direction + M5 = flip(M5,3); + % swap dimensions because gprMax is "weird" + M5 = permute(M5,[3 2 1]); + h5name = fullfile(params.EXPORTpath,params.save_h5); + dx = domain.dx*ones(1,3); + h5Title = 'GPRGRAVEL'; % should be changed + h5create(h5name,'/data',size(M5),'Datatype','int16'); + h5write(h5name,'/data',int16(M5)); + h5writeatt(h5name,'/','gprMax','3.1.5'); + h5writeatt(h5name,'/','Title',h5Title); + h5writeatt(h5name,'/','dx_dy_dz',dx); + fprintf('Created %s\n',h5name); + + % write corresponding info file + fileID = fopen(fullfile(params.EXPORTpath,[params.save_h5,'_INFO.txt']),'w'); + for i = 1:numel(infostr1) + fprintf(fileID,'%s\n',infostr1{i}); + end + fprintf(fileID,'\n'); + fprintf(fileID,'%s\n',infostr2); + fprintf(fileID,'\n'); + for i = 1:numel(infostr3) + fprintf(fileID,'%s\n',infostr3{i}); + end + fprintf(fileID,'\n'); + fprintf(fileID,'%s\n',infostr4); + fclose(fileID); + +end + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/getDK.m b/functions/getDK.m new file mode 100644 index 0000000..00cfb9a --- /dev/null +++ b/functions/getDK.m @@ -0,0 +1,62 @@ +function dk = getDK(dk_in,vol_in) +%getDK calculates dk values based on CRIM forumla +% +% Syntax: +% dk = getDK(dk_in,vol_in) +% +% Inputs: +% dk_in - vec (epsilon values of the species) +% vol_in - vec (volume fraction of the species) +% +% Outputs: +% dk +% +% Example: +% dk = getDK(dk_in,vol_in) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +dk = 0; +dblAlpha = 1/2; + +for i = 1:numel(dk_in) + dk = dk + (dk_in(i).^dblAlpha)*vol_in(i); +end + +dk = dk.^(1/dblAlpha); + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/getRotationMatrixFromAngleandAxis.m b/functions/getRotationMatrixFromAngleandAxis.m new file mode 100644 index 0000000..97700d2 --- /dev/null +++ b/functions/getRotationMatrixFromAngleandAxis.m @@ -0,0 +1,111 @@ +function R = getRotationMatrixFromAngleandAxis(phi,n) +%getRotationMatrixFromAngleandAxis calculates rotation matrix R to rotate about +%an axis n by an angle phi +% +% Syntax: +% getRotationMatrixFromAngleandAxis(phi,n) +% +% Inputs: +% phi - rotation angle [rad]; size Nx1 +% n - rotation axis vector [x y z]; size Nx3 +% +% Outputs: +% R - 3x3xN rotation matrix +% +% Example: +% R = getRotationMatrixFromAngleandAxis(pi,[0 0 1]') +% yields R = -1 0 0 +% 0 -1 0 +% 0 0 1 +% so that R*[1 0 0]' = [-1 0 0]' +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also: BLOCHUS +% Author: Thomas Hiller +% email: thomas.hiller[at]leibniz-liag.de +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% for only one axis-angle pair +if numel(phi) == 1 + % make "n" a unit vector + n = n./norm(n); + % get the individual components + nx = n(1); + ny = n(2); + nz = n(3); + % matrix terms needed + omcos = 1-cos(phi); + cosp = cos(phi); + sinp = sin(phi); + + % assemble rotation matrix R + R(1,1) = nx*nx*omcos + cosp; + R(1,2) = nx*ny*omcos - nz*sinp; + R(1,3) = nx*nz*omcos + ny*sinp; + + R(2,1) = ny*nx*omcos + nz*sinp; + R(2,2) = ny*ny*omcos + cosp; + R(2,3) = ny*nz*omcos - nx*sinp; + + R(3,1) = nz*nx*omcos - ny*sinp; + R(3,2) = nz*ny*omcos + nx*sinp; + R(3,3) = nz*nz*omcos + cosp; + +else % for multiple axes and angles + + % n should contain only unit vectors! + % get the individual components + nx = n(:,1); + ny = n(:,2); + nz = n(:,3); + % matrix terms needed + omcos = 1-cos(phi); + cosp = cos(phi); + sinp = sin(phi); + + % assemble rotation matrix R + R(1,1,:) = nx.*nx.*omcos + cosp; + R(1,2,:) = nx.*ny.*omcos - nz.*sinp; + R(1,3,:) = nx.*nz.*omcos + ny.*sinp; + + R(2,1,:) = ny.*nx.*omcos + nz.*sinp; + R(2,2,:) = ny.*ny.*omcos + cosp; + R(2,3,:) = ny.*nz.*omcos - nx.*sinp; + + R(3,1,:) = nz.*nx.*omcos - ny.*sinp; + R(3,2,:) = nz.*ny.*omcos + nx.*sinp; + R(3,3,:) = nz.*nz.*omcos + cosp; +end + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% BLOCHUS +% Copyright (C) 2019 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/getSubBodyCoords.m b/functions/getSubBodyCoords.m new file mode 100644 index 0000000..dd9c5bb --- /dev/null +++ b/functions/getSubBodyCoords.m @@ -0,0 +1,166 @@ +function [pos,block] = getSubBodyCoords(shape,aspect,r,dx,varargin) +%prepareDomain generates the domain data based on the user entries +% +% Syntax: +% prepareDomain +% +% Inputs: +% none +% +% Outputs: +% none +% +% Example: +% prepareDomain +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +use_orient = false; +if nargin > 4 + use_orient = true; + orient = varargin{1}; +end + +switch shape + case 'sphere' + + % radius in lattice units + r2 = ceil(r/dx); + % get the grid points inside the sphere of current size rbins(i) + [xi,yi,zi] = meshgrid(-r2:1:r2,-r2:1:r2,-r2:1:r2); + + dist = sqrt(xi.^2 + yi.^2 + zi.^2); + + if r == 1e-3 + pos = [0 0 0]; + in = false(size(dist)); + in(2,2,2) = true; + else + % if r<=0.02 + pos = [xi(dist<=r2) yi(dist<=r2) zi(dist<=r2)]; + in = dist<=r2; + % else + % pos = [xi(dist1 + block = false(size(xi)); + if use_orient + block(in) = true; + else + block(dist<=1) = true; + end +end + +return + +%% the original way +% % get the grid points inside the sphere of current size rbins(i) +% m = 0; +% sphere1 = zeros((2*r2+1)^3,3); +% for a = -r2:r2 +% for b = -r2:r2 +% for c = -r2:r2 +% dist = sqrt( a^2 + b^2 +c^2 ); +% if dx*dist <= r +% m = m+1; +% sphere1(m,:) = [a b c]; +% end +% end +% end +% end +% sphere1 = sphere1(1:m,:); +% nVol = m; + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/functions/interface/clearSingleAxis.m b/functions/interface/clearSingleAxis.m new file mode 100644 index 0000000..110ed42 --- /dev/null +++ b/functions/interface/clearSingleAxis.m @@ -0,0 +1,93 @@ +function clearSingleAxis(axh) +%clearSingleAxis clears an individual axis +% +% Syntax: +% clearSingleAxis(axh) +% +% Inputs: +% axh - axis handle +% +% Outputs: +% none +% +% Example: +% clearSingleAxis(gca) +% +% Other m-files required: +% clearSingleAxis +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI handle +fig = ancestor(axh,'figure','toplevel'); + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + % get GUI data + gui = getappdata(fig,'gui'); + + % get the parent of the axis and find possible legends + parent = get(axh,'Parent'); + lgh = findobj('Type','legend','Parent',parent); + if ~isempty(lgh) + delete(lgh); + end + + % look for specific tags and clear corresponding objects + ph = findall(axh,'Tag','MarkerLines'); + if ~isempty(ph); set(ph,'HandleVisibility','on'); end + + % clear the axis labels + xlabel(axh,''); + ylabel(axh,''); + zlabel(axh,''); + title(axh,' '); + + % reset axis limits and scale + grid(axh,'off'); + set(axh,'XLim',[0 1],'YLim',[0 1],'ZLim',[0 1]); + set(axh,'XTickMode','auto','XTickLabelMode','auto'); + set(axh,'YTickMode','auto','YTickLabelMode','auto'); + set(axh,'ZTickMode','auto','ZTickLabelMode','auto'); + set(axh,'XScale','lin','YScale','lin','ZScale','lin'); + set(axh,'FontSize',gui.myui.axfontsize); + + % clear the axis itself + cla(axh); + +else + warndlg({'clearSingleAxis:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/findParentOfType.m b/functions/interface/findParentOfType.m new file mode 100644 index 0000000..2ae3b1a --- /dev/null +++ b/functions/interface/findParentOfType.m @@ -0,0 +1,73 @@ +function ph = findParentOfType(h,type) +%findParentOfType is a "hack" because Matlab changed the parent-child +%hierarchy for some graphical objects +%2018: the minimize checkbox is a child of the uix.BoxPanel +%2014: the minimize checkbox is a child of a uicontainer -> child of a HBox -> +%child of a the BoxPanel +% +% Syntax: +% ph = findParentOfType(h,type) +% +% Inputs: +% h - handle +% type - type to look for +% +% Outputs: +% ph - handle of parent object +% +% Example: +% ph = findParentOfType(h,type) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +lookingfor = true; +child = h; +while lookingfor + parent = get(child,'Parent'); + if isa(parent,type) % the parent uix.BoxPanel was found + lookingfor = false; + ph = parent; + elseif isempty(parent) % nothing was found + ph = []; + disp('findParentOfType: No parent of specified type found.'); + break; + else % set the current parent to child and continue + child = parent; + end +end + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/minimizePanel.m b/functions/interface/minimizePanel.m new file mode 100644 index 0000000..2019881 --- /dev/null +++ b/functions/interface/minimizePanel.m @@ -0,0 +1,113 @@ +function minimizePanel(src,~) +%minimizePanel handles the minimization/maximization of all box-panels +% +% Syntax: +% minimizePanel(src) +% +% Inputs: +% src - handle of the calling object +% +% Outputs: +% none +% +% Example: +% minimizePanel(src) +% +% Other m-files required: +% findParentOfType +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% get GUI handle and data +fig = ancestor(src,'figure','toplevel'); +gui = getappdata(fig,'gui'); + +% get the corresponding box-panel to be minimized / maximized +panel = findParentOfType(src,'uix.BoxPanel'); +% panel title +paneltitle = get(panel,'Title'); +% check if panel is minimized (true) +isminimized = get(panel,'Minimized'); + +% minimized height (default value for all box-panels) +pheightmin = 22; +% default heights +def_heights = gui.myui.heights; + +if ~isempty(fig) && strcmp(get(fig,'Tag'),'GPRGRAVEL') + + panel_1 = 'Grains'; + panel_2 = 'Domain'; + panel_3 = 'Parameter'; + + switch paneltitle + case panel_1 + id = 1; + case panel_2 + id = 2; + case panel_3 + id = 3; + otherwise + helpdlg({'function: minimizePanel',... + 'Something is utterly wrong.'},'Info'); + end + + switch paneltitle + case {panel_1,panel_2,panel_3} + % all heights of the left panels + heights = get(gui.panels.main,'Heights'); + % default height of this panel + pheight = def_heights(2,id); + if isminimized % maximize panel + heights(id) = pheight; + set(gui.panels.main,'Heights',heights); + set(panel,'Minimized',false); + else % minimize panel + heights(id) = pheightmin; + set(gui.panels.main,'Heights',heights); + set(panel,'Minimized',true) + end + onFigureSizeChange(fig); + otherwise + helpdlg({'function: minimizePanel',... + 'Something is utterly wrong.'},'Info'); + end +else + warndlg({'minimizePanel:','There is no figure with the GPRGRAVEL Tag open.'},... + 'GPRGRAVEL error'); +end +% update GUI data +setappdata(fig,'gui',gui); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/onFigureSizeChange.m b/functions/interface/onFigureSizeChange.m new file mode 100644 index 0000000..e0ed45f --- /dev/null +++ b/functions/interface/onFigureSizeChange.m @@ -0,0 +1,67 @@ +function onFigureSizeChange(fig,~) +%onFigureSizeChange fixes an ugly Matlab bug when resizing a box-panel +%which holds an axis and a legend. This problem occurs even though the +%axis is inside a uicontainer to group all axes elements. And it only +%occurs for box-panels. If the uicontainer, which holds axis and legend, +%is inside a tab-panel this problem does not occur. They had one job ... m( +% +% Syntax: +% onFigureSizeChange(fig,~) +% +% Inputs: +% fig - handle of the calling figure +% +% Outputs: +% none +% +% Example: +% onFigureSizeChange(h) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% get GUI data +gui = getappdata(fig,'gui'); + +% proceed if there is data +if ~isempty(gui) + if isfield(gui,'panels') + heights = get(gui.panels.main,'Heights'); + set(gui.left,'Heights',-1,'MinimumHeights',sum(heights)+1); + end +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/plotDomaindata.m b/functions/interface/plotDomaindata.m new file mode 100644 index 0000000..19dccde --- /dev/null +++ b/functions/interface/plotDomaindata.m @@ -0,0 +1,121 @@ +function plotDomaindata(fig) +%plotDomaindata plots all relevant domain data +% +% Syntax: +% plotDomaindata(fig) +% +% Inputs: +% fig - figure handle +% +% Outputs: +% none +% +% Example: +% plotDomaindata(fig) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI data +data = getappdata(fig,'data'); +gui = getappdata(fig,'gui'); +grains = data.grains; +domain = data.domain; +params = data.params; + +% get axes +ax = gui.axes_handles.domain; +clearSingleAxis(ax); +hold(ax,'on'); + +xmin = 0; +ymin = 0; +zmin = 0; +xmax = domain.xm; +ymax = domain.ym; +zmax = domain.zm; + +if params.useTarget + axes(ax); + ix = params.targetIDX.*domain.dx; + plot3(ix(:,1),ix(:,2),ix(:,3),'k.','Parent',ax); +end + +% if the surface dips, take care of it +zBase = zmin+[(xmax-xmin)*tand(params.maskdipx(1)) ... + (ymax-ymin)*tand(params.maskdipy(1))]; + +% planes parallel to x +xplane1 = [xmin ymin zBase(1)+zBase(2); xmax ymin zBase(2); xmax ymin zmax; xmin ymin zmax]; +xplane2 = [xmin ymax zBase(1); xmax ymax zmin; xmax ymax zmax; xmin ymax zmax]; +% planes parallel to y +yplane1 = [xmin ymin zBase(1)+zBase(2); xmin ymax zBase(1); xmin ymax zmax; xmin ymin zmax]; +yplane2 = [xmax ymin zBase(2); xmax ymax zmin; xmax ymax zmax; xmax ymin zmax]; +% planes parallel to z +zplane1 = [xmin ymin zBase(1)+zBase(2); xmax ymin zBase(2); xmax ymax zmin; xmin ymax zBase(1)]; +zplane2 = [xmin ymin zmax; xmax ymin zmax; xmax ymax zmax; xmin ymax zmax]; + +% plot the planes +V = [xplane1;xplane2;yplane1;yplane2;zplane1;zplane2]; +F = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16; 17 18 19 20; 21 22 23 24]; +ph = patch('Faces',F,'Vertices',V,'Parent',ax); +ph.FaceAlpha = 0.5; +ph.FaceColor = gui.myui.color.domain; + +% plot the center axes +plot3([xmin xmax],[(ymax-ymin)/2 (ymax-ymin)/2],[(zmax-zmin)/2 (zmax-zmin)/2],... + 'Color','r','Parent',ax); +plot3([(xmax-xmin)/2 (xmax-xmin)/2],[ymin ymax],[(zmax-zmin)/2 (zmax-zmin)/2],... + 'Color','g','Parent',ax); +plot3([(xmax-xmin)/2 (xmax-xmin)/2],[(ymax-ymin)/2 (ymax-ymin)/2],[zmin zmax],... + 'Color','b','Parent',ax); + +if isfield(grains,'rmax') + dx = grains.rmax; +else + dx = 0.05; +end +set(ax,'XLim',[xmin-dx xmax+dx],'XTick',linspace(xmin,xmax,3),... + 'YLim',[ymin-dx ymax+dx],'YTick',linspace(ymin,ymax,3),...... + 'ZLim',[zmin-dx zmax+dx],'ZTick',linspace(zmin,zmax,3)); +set(ax,'XTickLabelMode','auto','YTickLabelMode','auto','ZTickLabelMode','auto'); +set(ax,'ZDir','reverse'); +set(get(ax,'XLabel'),'String','x [m]'); +set(get(ax,'YLabel'),'String','y [m]'); +set(get(ax,'ZLabel'),'String','z [m]'); +set(ax,'FontSize',gui.myui.axfontsize); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/plotGSDdata.m b/functions/interface/plotGSDdata.m new file mode 100644 index 0000000..206ab35 --- /dev/null +++ b/functions/interface/plotGSDdata.m @@ -0,0 +1,123 @@ +function plotGSDdata(fig,type) +%plotGSDdata plots the GSD data +% +% Syntax: +% plotGSDdata(fig,type) +% +% Inputs: +% fig - figure handle +% type - string ('input' or 'output') +% +% Outputs: +% none +% +% Example: +% plotGSDdata(fig,'input') +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI data +data = getappdata(fig,'data'); +gui = getappdata(fig,'gui'); +grains = data.grains; +domain = data.domain; + +switch type + + case 'input' + + ax = gui.axes_handles.histIn; + clearSingleAxis(ax); + hold(ax,'on'); + + if grains.ishistogram + plot(grains.hist_raw(:,1),grains.hist_raw(:,2),'Color',gui.myui.color.grains,'Parent',ax); + else + % create tmporary bins for plotting + % dbins = domain.dx:domain.dx:grains.rmax*2; + dbins = logspace(-5,0,50); + % radius binning vector + rbins = dbins/2; + % --- account for new Matlab behaviour of histogram vs hist + d = diff(dbins)/2; + edges = [dbins(1)-d(1), dbins(1:end-1)+d, dbins(end)+d(end)]; + edges(2:end) = edges(2:end)+eps(edges(2:end)); + N = histcounts(grains.dia_raw,edges,'Normalization','cdf'); + plot(rbins,N,'Color',gui.myui.color.grains,'Parent',ax); + end + + if isfield(grains,'rbins') + line(grains.rbins,cumsum(grains.nvoxBins)/sum(grains.nvoxBins),... + 'marker','+','Color','k','LineStyle','none','Parent',ax); + end + + % plot a line at rmax + plot([grains.rmax grains.rmax],[0 1],'k--','Parent',ax); + text(grains.rmax*2,0.35,['r_{max}=',sprintf('%4.3f',grains.rmax),'m'],'Rotation',90,'FontSize',12,... + 'FontWeight','demi','Parent',ax); + + % axes settings + set(ax,'XLim',[5e-6 1],'XTick',logspace(-5,0,6),'XScale','log'); + % set(ax,'XLim',[0 grains.rmax],'XTick',linspace(0,grains.rmax,6),'XScale','lin'); + set(get(ax,'XLabel'),'String','Radius [m]'); + set(get(ax,'YLabel'),'String','CDF [-]'); + set(ax,'FontSize',gui.myui.axfontsize); + hold(ax,'off'); + + case 'monitor' + % get axes + ax = gui.axes_handles.histOut; + clearSingleAxis(ax); + hold(ax,'on'); + + % get monitor data + monitor = data.monitor; + + plot(monitor.voxHist(1,:),cumsum(grains.nvoxBins)./domain.VOL0matrix,... + 'Color',gui.myui.color.grains,'Parent',ax); + plot(monitor.voxHist(1,:),(domain.VOL0matrix-monitor.voxHist(2,:))./domain.VOL0matrix,... + 'Marker','+','Color','k','LineStyle','none','Parent',ax); + + % axes settings + set(ax,'XLim',[5e-6 1],'XTick',logspace(-5,0,6),'XScale','log'); + % set(ax,'XLim',[0 grains.rmax],'XTick',linspace(0,grains.rmax,6),'XScale','lin'); + set(get(ax,'XLabel'),'String','Radius [m]'); + set(get(ax,'YLabel'),'String','CDF [-]'); + set(ax,'FontSize',gui.myui.axfontsize); + hold(ax,'off'); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/plotMatrixdata.m b/functions/interface/plotMatrixdata.m new file mode 100644 index 0000000..cc490e9 --- /dev/null +++ b/functions/interface/plotMatrixdata.m @@ -0,0 +1,134 @@ +function plotMatrixdata(fig,type) +%plotMatrixdata plots the Matrix data +% +% Syntax: +% plotMatrixdata(fig,type) +% +% Inputs: +% fig - figure handle +% type - string ('input' or 'output') +% +% Outputs: +% none +% +% Example: +% plotMatrixdata(fig,'input') +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI data +data = getappdata(fig,'data'); +gui = getappdata(fig,'gui'); +grains = data.grains; +domain = data.domain; + +switch type + case 'monitor' + % get axis + ax = gui.axes_handles.Volume; + clearSingleAxis(ax); + hold(ax,'on'); + + % get monitor data + monitor = data.monitor; + Lr = monitor.Lr; + Lr(Lr==0) = NaN; + Lr(Lr==9999) = NaN; + + % prepare slices + szL = size(Lr); + + % real coordinates + x = 0:domain.dx:domain.xm; + y = 0:domain.dx:domain.ym; + z = 0:domain.dx:domain.zm; + + % how many margin voxel + mx = szL(1)-numel(x); + my = szL(2)-numel(y); + mz = szL(3)-numel(z); + + % coordinates without margin + xx = -(mx/2*domain.dx):domain.dx:domain.xm+(mx/2*domain.dx); + yy = -(my/2*domain.dx):domain.dx:domain.ym+(my/2*domain.dx); + if mod(mz,2)==0 + zz = -(mz/2*domain.dx):domain.dx:domain.zm+(mz/2*domain.dx); + else + zz = -(floor(mz/2)*domain.dx):domain.dx:domain.zm+(ceil(mz/2)*domain.dx); + end + + % get the 3D grid coordinates + [XXX,YYY,ZZZ] = meshgrid(xx,yy,zz); + + % define the center slices + xslice = xx(ceil(numel(xx)/2)); + yslice = yy(ceil(numel(yy)/2)); + zslice = zz(ceil(numel(zz)/2)); + + % swap xy dimensions + Lr = permute(Lr,[2 1 3]); + % plot the slices + try + slice(XXX,YYY,ZZZ,Lr,xslice,yslice,zslice,'Parent',ax); + catch + disp('plotMatrixdata: No data yet to plot on slice(s).') + end + + % colors + cmap = flipud(copper(numel(grains.rbins))); + cmap = [cmap;0 0 1]; + set(ax,'Colormap',cmap); + set(ax,'CLim',[1e-4 max(grains.rbins)*1.1]); + + % axis properties + rmax = grains.rmax; + axis(ax,'equal'); + shading(ax,'flat'); + set(ax,'XLim',[x(1)-rmax x(end)+rmax],'XTick',linspace(x(1),x(end),3),... + 'YLim',[y(1)-rmax y(end)+rmax],'YTick',linspace(y(1),y(end),3),... + 'ZLim',[z(1)-rmax z(end)+rmax],'ZTick',linspace(z(1),z(end),3)); + set(get(ax,'XLabel'),'String','x [m]'); + set(get(ax,'YLabel'),'String','y [m]'); + set(get(ax,'ZLabel'),'String','z [m]'); + set(ax,'ZDir','reverse'); + set(ax,'FontSize',gui.myui.axfontsize); + hold(ax,'off'); + + case 'result' + + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/plotProfiledata.m b/functions/interface/plotProfiledata.m new file mode 100644 index 0000000..07778f1 --- /dev/null +++ b/functions/interface/plotProfiledata.m @@ -0,0 +1,150 @@ +function plotProfiledata(fig) +%plotProfiledata plots the resulting porosity profile(s) in the profile +%panel +% +% Syntax: +% plotProfiledata(fig,tag) +% +% Inputs: +% fig - figure handle +% +% Outputs: +% none +% +% Example: +% plotProfiledata(fig) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI data +data = getappdata(fig,'data'); +gui = getappdata(fig,'gui'); +domain = data.domain; + +% get axes +ax1 = gui.axes_handles.ProfileAir; +clearSingleAxis(ax1); +hold(ax1,'on'); +ax2 = gui.axes_handles.ProfileH2O; +clearSingleAxis(ax2); +hold(ax2,'on'); + +%% porosity (only air voxel -> M=0) +M = domain.final{2}.M; +% flip upside down because 0 is at surface +M = flip(M,3); + +sz = size(M); +% sum the corresponding air voxel in each dimension +px = 1-squeeze(sum(sum(M,2),3)/sz(2)/sz(3)); +py = 1-squeeze(sum(sum(M,1),3)/sz(1)/sz(3)); +pz = 1-squeeze(sum(sum(M,1),2)/sz(1)/sz(2)); +% the distance vectors +x = 1:1:sz(1); +y = 1:1:sz(2); +z = 1:1:sz(3); +% plot data +plot(px,x./sz(1),'r','DisplayName','yz-slice','Parent',ax1); +plot(py,y./sz(2),'g','DisplayName','xz-slice','Parent',ax1); +plot(pz,z./sz(3),'b','DisplayName','xy-slice','Parent',ax1); + +% add a line for each mean value +plot([mean(px) mean(px)],[0 1],'r.','HandleVisibility','off',... + 'Tag','MarkerLines','Parent',ax1); +plot([mean(py) mean(py)],[0 1],'g:','HandleVisibility','off',... + 'Tag','MarkerLines','Parent',ax1); +plot([mean(pz) mean(pz)],[0 1],'b--','HandleVisibility','off',... + 'Tag','MarkerLines','Parent',ax1); + +% set axis properties +set(ax1,'XLim',[0 max([px(:);py(:);pz(:)])]*1.1,'XTickMode','auto',... + 'XTickLabelMode','auto'); +set(ax1,'YLim',[0 1],'YTick',0:0.2:1,... + 'YTickLabel',{'0 (bot)','0.2','0.4','0.6','0.8','1 (top)'}); +set(get(ax1,'XLabel'),'String','air volume [-]'); +set(get(ax1,'YLabel'),'String','normalized domain dimension'); +set(get(ax1,'Title'),'String',['mean \Phi=',sprintf('%6.4f',mean(px))]); +set(ax1,'FontSize',gui.myui.axfontsize); +hold(ax1,'off'); +legend(ax1,'Location','best'); + +%% porosity (only water voxel -> Lr=99) +M = zeros(size(domain.final{2}.Lr)); +% flip upside down because 0 is at surface +M(domain.final{2}.Lr==99) = 1; +M = flip(M,3); +sz = size(M); +% sum the corresponding water voxel in each dimension +px = squeeze(sum(sum(M,2),3)/sz(2)/sz(3)); +py = squeeze(sum(sum(M,1),3)/sz(1)/sz(3)); +pz = squeeze(sum(sum(M,1),2)/sz(1)/sz(2)); +% the distance vectors +x = 1:1:sz(1); +y = 1:1:sz(2); +z = 1:1:sz(3); + +% get maximum water content for axis limits +max_w = max([px(:);py(:);pz(:)]); +if max_w == 0 + xlims = [-1 1]; +else + xlims = [0 max_w*1.1]; +end + +% plot data +plot(px,x./sz(1),'r','DisplayName','yz-slice','Parent',ax2); +plot(py,y./sz(2),'g','DisplayName','xz-slice','Parent',ax2); +plot(pz,z./sz(3),'b','DisplayName','xy-slice','Parent',ax2); + +% add a line for each mean value +plot([mean(px) mean(px)],[0 1],'r.','HandleVisibility','off',... + 'Tag','MarkerLines','Parent',ax2); +plot([mean(py) mean(py)],[0 1],'g:','HandleVisibility','off',... + 'Tag','MarkerLines','Parent',ax2); +plot([mean(pz) mean(pz)],[0 1],'b--','HandleVisibility','off',... + 'Tag','MarkerLines','Parent',ax2); + +% set axis properties +set(ax2,'XLim',xlims,'XTickMode','auto','XTickLabelMode','auto'); +set(ax2,'YLim',[0 1],'YTick',0:0.2:1,... + 'YTickLabel',{'0 (bot)','0.2','0.4','0.6','0.8','1 (top)'}); +set(get(ax2,'XLabel'),'String','water volume [-]'); +set(get(ax2,'Title'),'String',['mean \Theta=',sprintf('%6.4f',mean(px))]); +set(ax2,'FontSize',gui.myui.axfontsize); +hold(ax2,'off'); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/plotSlicedata.m b/functions/interface/plotSlicedata.m new file mode 100644 index 0000000..4b92bce --- /dev/null +++ b/functions/interface/plotSlicedata.m @@ -0,0 +1,145 @@ +function plotSlicedata(fig,tag,val) +%plotSlicedata plots the resulting gravel "packing" in the slice panel +% +% Syntax: +% plotSlicedata(fig) +% +% Inputs: +% fig - figure handle +% tag - slice view +% val - slice step +% +% Outputs: +% none +% +% Example: +% plotSlicedata(fig) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI data +data = getappdata(fig,'data'); +gui = getappdata(fig,'gui'); +grains = data.grains; +domain = data.domain; + +% get axes +ax = gui.axes_handles.Slice; +clearSingleAxis(ax); +hold(ax,'on'); + +% get final data +Lr = domain.final{1}.Lr; +% remove air +Lr(Lr==0) = NaN; +% remove target +Lr(Lr==9999) = NaN; + +marg = domain.marg; + +% prepare slices +szL = size(Lr); + +x = 0:domain.dx:domain.xm; +y = 0:domain.dx:domain.ym; +z = 0:domain.dx:domain.zm; + +mx = szL(1)-numel(x); +my = szL(2)-numel(y); +mz = szL(3)-numel(z); + +xx = -(mx/2*domain.dx):domain.dx:domain.xm+(mx/2*domain.dx); +yy = -(my/2*domain.dx):domain.dx:domain.ym+(my/2*domain.dx); +if mod(mz,2)==0 + zz = -(mz/2*domain.dx):domain.dx:domain.zm+(mz/2*domain.dx); +else + zz = -(floor(mz/2)*domain.dx):domain.dx:domain.zm+(ceil(mz/2)*domain.dx); +end + +rmax = grains.rmax; +switch tag + case 'XZ' + [XX,YY] = meshgrid(xx,zz); + S = squeeze(Lr(:,marg+val,:)); + xlims = [x(1)-rmax x(end)+rmax]; + xticks = linspace(x(1),x(end),3); + ylims = [z(1)-rmax z(end)+rmax]; + yticks = linspace(z(1),z(end),3); + xlabel = 'x [m]'; + ylabel = 'z [m]'; + ydir = 'reverse'; + case 'YZ' + [XX,YY] = meshgrid(yy,zz); + S = squeeze(Lr(marg+val,:,:)); + xlims = [y(1)-rmax y(end)+rmax]; + xticks = linspace(y(1),y(end),3); + ylims = [z(1)-rmax z(end)+rmax]; + yticks = linspace(z(1),z(end),3); + xlabel = 'y [m]'; + ylabel = 'z [m]'; + ydir = 'reverse'; + case 'XY' + [XX,YY] = meshgrid(xx,yy); + S = squeeze(Lr(:,:,marg+val)); + xlims = [x(1)-rmax x(end)+rmax]; + xticks = linspace(x(1),x(end),3); + ylims = [y(1)-rmax y(end)+rmax]; + yticks = linspace(y(1),y(end),3); + xlabel = 'x [m]'; + ylabel = 'y [m]'; + ydir = 'normal'; +end + +pcolor(XX,YY,S','Parent',ax); + +% colors +cmap = flipud(copper(numel(grains.rbins))); +cmap = [cmap;0 0 1]; +set(ax,'Colormap',cmap); +set(ax,'CLim',[1e-4 max(grains.rbins)*1.1]); +axis(ax,'equal'); +shading(ax,'flat'); +% axes settings +set(ax,'XLim',xlims,'XTick',xticks,'YLim',ylims,'YTick',yticks,'YDir',ydir); +set(get(ax,'XLabel'),'String',xlabel,'FontSize',gui.myui.axfontsize); +set(get(ax,'YLabel'),'String',ylabel,'FontSize',gui.myui.axfontsize); +set(get(ax,'Title'),'String',['slice: ',sprintf('%4.3f',(val-1)*domain.dx),'m'],... + 'FontSize',gui.myui.axfontsize); +set(ax,'FontSize',gui.myui.axfontsize); +hold(ax,'off'); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/setTargetPosition.m b/functions/interface/setTargetPosition.m new file mode 100644 index 0000000..c41b21f --- /dev/null +++ b/functions/interface/setTargetPosition.m @@ -0,0 +1,110 @@ +function [data] = setTargetPosition(data) +%setTargetPosition changes the target position within the domain +% +% Syntax: +% [data] = setTargetPosition(data) +% +% Inputs: +% data - GUI data struct +% +% Outputs: +% data - GUI data struct +% +% Example: +% [data] = setTargetPosition(data) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +domain = data.domain; +params = data.params; + +centOld = params.targetCenterOld; +centNew = params.targetCenter; +% shift vector in real units +shift = centNew-centOld; +% shift vector in voxel units +shiftvox = round(shift./domain.dx); + +params.targetIDX(:,1) = params.targetIDX(:,1)+shiftvox(1); +params.targetIDX(:,2) = params.targetIDX(:,2)+shiftvox(2); +params.targetIDX(:,3) = params.targetIDX(:,3)+shiftvox(3); + +% now rotate the polar angle around the x-axis +phi0 = deg2rad(params.targetOrientOld(1)); +phi1 = deg2rad(params.targetOrient(1)); +if phi0~=phi1 + R0 = getRotationMatrixFromAngleandAxis(-phi0,[0 1 0]); + R1 = getRotationMatrixFromAngleandAxis(phi1,[0 1 0]); + for i1 = 1:numel(params.target) + tmp = [params.targetIDX(i1,1) params.targetIDX(i1,2) params.targetIDX(i1,3)]'; + % move to center + tmp = tmp-centNew'./domain.dx; + % rotate + tmp = R0*tmp; % old angle back + tmp = R1*tmp; % new angle + % move back + tmp = round(tmp+centNew'./domain.dx); + params.targetIDX(i1,1) = tmp(1); + params.targetIDX(i1,2) = tmp(2); + params.targetIDX(i1,3) = tmp(3); + end +end + +% now rotate the azimuthal angle around the z-axis +theta0 = deg2rad(params.targetOrientOld(2)); +theta1 = deg2rad(params.targetOrient(2)); +if theta0~=theta1 + R0 = getRotationMatrixFromAngleandAxis(-theta0,[0 0 1]); + R1 = getRotationMatrixFromAngleandAxis(theta1,[0 0 1]); + for i1 = 1:numel(params.target) + tmp = [params.targetIDX(i1,1) params.targetIDX(i1,2) params.targetIDX(i1,3)]'; + % move to center + tmp = tmp-centNew'./domain.dx; + % rotate + tmp = R0*tmp; % old angle back + tmp = R1*tmp; % new angle + % move back + tmp = round(tmp+centNew'./domain.dx); + params.targetIDX(i1,1) = tmp(1); + params.targetIDX(i1,2) = tmp(2); + params.targetIDX(i1,3) = tmp(3); + end +end + +data.params = params; + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/interface/showLogInfo.m b/functions/interface/showLogInfo.m new file mode 100644 index 0000000..7907942 --- /dev/null +++ b/functions/interface/showLogInfo.m @@ -0,0 +1,62 @@ +function showLogInfo(str,isgui,gui) +%showLogInfo plots the info either to the GUI or to the commandline +% +% Syntax: +% showLogInfo(str,isgui,gui) +% +% Inputs: +% str - info str +% isgui - bool (true | false) +% gui - gui handle +% +% Outputs: +% none +% +% Example: +% showLogInfo(str,isgui,gui) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +if isgui + set(gui.listbox_handles.info,'String', str); + set(gui.listbox_handles.info,'Value',size(get(gui.listbox_handles.info,'String'),1)) +else + disp(str); +end +pause(0.001); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/functions/interface/updateStatusInformation.m b/functions/interface/updateStatusInformation.m new file mode 100644 index 0000000..7c52af5 --- /dev/null +++ b/functions/interface/updateStatusInformation.m @@ -0,0 +1,91 @@ +function updateStatusInformation(fig) +%updateStatusInformation updates all fields inside the bottom status bar +% +% Syntax: +% updateStatusInformation(fig) +% +% Inputs: +% fig - figure handle +% +% Outputs: +% none +% +% Example: +% updateStatusInformation(fig) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% get GUI data +data = getappdata(fig,'data'); +gui = getappdata(fig,'gui'); + +set(gui.text_handles.TimerStat,'String',['Calc. Time: ',sprintf('%5.3f',data.info.Timer),'s']); + +switch get(gui.radio_handles.closedSurface,'Value') + case 1 + set(gui.text_handles.Surface,'String','SURFACE: CLOSED'); + case 0 + set(gui.text_handles.Surface,'String','SURFACE: OPEN'); +end + +if data.params.useTarget + set(gui.text_handles.Targets,'String','TARGETS: ON'); +else + set(gui.text_handles.Targets,'String','TARGETS: OFF'); +end + +if data.params.useSatProfile + str = get(gui.popup_handles.SatProfileType,'String'); + val = get(gui.popup_handles.SatProfileType,'Value'); + set(gui.text_handles.SatProf,'String',['SATURATION Profile: ',str{val}(1:3)]); +else + set(gui.text_handles.SatProf,'String','SATURATION Profile: OFF'); +end + +% switch data.info.ToolTips +% case 1 +% set(gui.text_handles.TooltipsStat,'String','Tooltips: ON'); +% case 0 +% set(gui.text_handles.TooltipsStat,'String','Tooltips: OFF'); +% end + +set(gui.text_handles.VersionStat,'String',['Version: ',gui.myui.version]); + +% Matlab takes some time +pause(0.001); + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/placeGrains.m b/functions/placeGrains.m new file mode 100644 index 0000000..f8bd43d --- /dev/null +++ b/functions/placeGrains.m @@ -0,0 +1,586 @@ +function [domain,grains,params] = placeGrains(domain,grains,params,monitor,varargin) +%placeGrains places all grains within the domain +% +% Syntax: +% [domain,grains] = placeGrains(domain,grains,params,monitor) +% +% Inputs: +% domain +% grains +% params +% monitor +% varargin +% +% Outputs: +% domain +% grains +% params +% +% Example: +% [domain,grains] = placeGrains(domain,grains,params,monitor,src) +% +% Other m-files required: +% getSubBodyCoords +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% check if called from GUI +isgui = false; +if nargin > 4 + src = varargin{1}; + % get GUI handle + fig = ancestor(src,'figure','toplevel'); + isgui = true; + % get GUI data + gui = getappdata(fig,'gui'); +else + gui = 0; +end + +%% INITIALIZE +tic; + +% init the RNG +if params.use_customRNG + rng(params.customRNGSEED) +else + s = rng(); + params.customRNGstate = s; +end + +% reset/empty log field before caluclation +monitor.log = ''; + +% global statistics counters +monitor.stat = [0 0 0 0]; +monitor.threshMaxTry = 2e6; % until 31.01.22 +monitor.nVoxAim = flip(cumsum(flip(grains.nvoxBins))); +monitor.poro_final = domain.VolSpeciesAIR+domain.VolSpeciesH2O; +monitor.domainVOL0 = domain.VOL0; +monitor.domainVOL0matrix = domain.VOL0matrix; + +% get the matrices with the margin +M = domain.final{1}.M; +M_valCtr = domain.final{1}.M_valCtr; +if ~params.boolOmitLn + L1 = domain.final{1}.Ln; +end +L2 = domain.final{1}.Lr; +szM = size(M); + +% margin width +marg = domain.marg; + +% get the coordinate lists +if isfield(domain,'xyzr0') + xyzr0 = domain.xyzr0; + monitor.nxyzr0 = size(xyzr0,1); +end + +monitor.n = find(domain.xyzr0(:,end)>0,1,'last'); +if isempty(monitor.n) + monitor.n = 0; +end +monitor.n = monitor.n+1; +n_start = monitor.n; +if size(xyzr0,1) >= monitor.n + if xyzr0(monitor.n,4) < 0 + monitor.n = n_start+1; + n_start = monitor.n; + end +end + +% open surface switch and threshold radius +closeSurface = params.closeSurface; +closeSurfaceR = params.closeSurfaceR; + +por_RequireTouch = 0.6; +r_RequireTouch = 0; +if isfield(params,'requireTouch') + if isfield(params.requireTouch,'r') + r_RequireTouch = params.requireTouch.r; + por_RequireTouch = 1e-6; + elseif isfield(params.requireTouch,'por') + r_RequireTouch = 0; + por_RequireTouch = params.requireTouch.por; + end + + if isfield(params.requireTouch,'nVox') + monitor.nMinTouch = min([0 params.requireTouch.nVox-1]); + else + monitor.nMinTouch = 0; + end +end + +monitor.nSwapListBoxMax = 1e2; +monitor.threshSwapListBox = 1e3; % swap after these number of successive failures +if isfield(params,'nSwapListBoxMax') + monitor.nSwapListBoxMax = params.nSwapListBoxMax; +end +if isfield(params,'threshSwapListBox') + monitor.threshSwapListBox = params.threshSwapListBox; +end + + +if params.useTarget +% domain.target_MargBox = params.target_MargBox; +end +monitor.binStat = zeros(4,length(grains.rbins)); +monitor.voxHist = zeros(3,length(grains.rbins)); +monitor.voxHist(1,:) = grains.rbins; +monitor.voxHist(3,:) = monitor.nVoxAim; + +% plotting during calculation +% plotting = init_plotting(domain,grains,monitor); +% plotting.threshMaxTry = monitor.threshMaxTry; +% plotting.HullHist = cat(1,linspace(0,1,51),zeros(1,51)); +% plotting.HullLims = [0 0]; + +monitor.boolMustTouch = false; + +% run backwards to start with the largest grains +nBin = numel(grains.rbins); +monitor.threshMaxTry = 2e6; % until 31.01.22 + +% update list of vacant voxels as soon as +% failed attempt counter reaches 10% +nMod_UpdateIndexList = 10*round(monitor.threshMaxTry/(100*10)); + +if isfield(grains,'nVox') + monitor.nVox = grains.nVox; +else + monitor.nVox = [0 0]; +end + +if isfield(grains,'iBin') + iBinStart = grains.iBin; +else + iBinStart = nBin; +end + +monitor.arrPackVel = zeros(2,2); +monitor.arrPackVel(2,:) = [toc monitor.nVox(1)]; +monitor.velPackMax = 0; + +monitor.por_cur = 1-monitor.nVox(1)/domain.VOL0; + +if isfield(domain,'plotting') + plotting = domain.plotting; +end + +monitor.log = [monitor.log sprintf('%s: Switching to tight placement of grains.\n',datestr(now,'dd.mm.yy HH:MM'))]; +grains.nLastFreely = monitor.n-1; + +% count swapping between +% - list-based drawing(to ensure touch) +% - box-based (to ensure free positions) +% +iSwapListBox = 0; +% define max. number of swaps + +boolUpdateBoxList = false; +boolDrawFromGrainList = false; + + +monitor.nLstVox = 0; +monitor.iRandPos = 1; +monitor.nRandPos = 1; + +cc = 0; +%% GRAIN PLACEMENT STARTS +for i = iBinStart:-1:1 + cc = cc + 1; + % reset failure statistics + monitor.arrFailStat = zeros(1,3); + % current radius of sphere in [m] + r = grains.rbins(i); + monitor.rbin = r; + + % info output + str1 = ['RUN - placeGrains: bin class: ',sprintf('%d / %d',cc,numel(grains.rbins))]; + monitor.log = [monitor.log newline sprintf('%s: Init radius bin #%d (r=%6.4f m)\n',datestr(now,'dd.mm.yy HH:MM'),i,r)]; + + if isgui + set(gui.text_handles.Status,'String', str1); + else + disp(str1); + end + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + + if monitor.nVoxAim(i) == 0 + % skip bin if empty + monitor.log = [monitor.log sprintf('%s: bin is empty. Skipping.\n',datestr(now,'dd.mm.yy HH:MM'))]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + break; + end + + monitor.binStat(4,i) = max([monitor.binStat(4,i) monitor.stat(4)]); + monitor.voxHist(2,1:i) = monitor.nVox(1); +% plotting = update_PackingMonitor(M,L2,plotting,monitor); + + switch grains.shape + case 'sphere' + % the actual grain + sphere = getSubBodyCoords(grains.shape,[1 1 1],r,domain.dx); + % a grain that is one lattice unit larger + sphereB = getSubBodyCoords(grains.shape,[1 1 1],r+domain.dx,domain.dx); + case 'ellipse' + % here one can randomize the size of the ellipses + grains.axes = grains.axes./max(grains.axes); + a = grains.axes(1);%0.4 + (1-0.4).*rand(1); + b = grains.axes(2);%0.4 + (1-0.4).*rand(1); + c = grains.axes(3);%0.4 + (1-0.4).*rand(1); + % here one can ranomize the orientation (per radius bin) + orient = grains.orient; % grains.orient(1) = randi([20 60]); + sphere = getSubBodyCoords(grains.shape,[a b c],r,domain.dx,orient); + % a grain that is one lattice unit larger + sphereB = getSubBodyCoords(grains.shape,[a b c],r+domain.dx,domain.dx,orient); + end + tmpOnesA = ones(size(sphere,1),1); + tmpOnesB = ones(size(sphereB,1),1); + + if ~boolDrawFromGrainList + % fprintf('\n%s\ncreating index list after previous r_bin is finished\n',repmat('#',[1,70])); +% monitor.log = [monitor.log sprintf('%s: Creating index list after previous r_bin is finished\n',datestr(now,'dd.mm.yy HH:MM'))]; +% showLogInfo(monitor.log,isgui,gui); +% pause(0.01); + + monitor.binStat(4,i) = max([monitor.binStat(4,i) monitor.stat(4)]); + monitor.voxHist(2,1:i) = monitor.nVox(1); + % plotting = update_PackingMonitor(M,L2,plotting,monitor); + + boolUpdateBoxList = true; + else + monitor.n = find(domain.xyzr0(:,end)>0,1,'last'); + end + + % current bin counter + nb = 1; + + % run as long as a sufficient amount of voxels are placed inside the domain (without margin) + nDumpUpdateCurBin = max([1 round(grains.Nbins(i)/params.dumpsPerBin)]); + while monitor.nVox(1) <= monitor.nVoxAim(i) + % global counter + monitor.stat(1) = monitor.stat(1) + 1; + % current grain counter + monitor.stat(4) = monitor.stat(4) + 1; + + if closeSurface && r <= closeSurfaceR + % mark all invalid grain center positions as occupied + % (otherwise M_valCtr won't be taken into account for packing) + M = M | ~M_valCtr; + + monitor.log = [monitor.log sprintf('%s: Fixing soil surface, new grains must be placed below\n',datestr(now,'dd.mm.yy HH:MM'))]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + if isgui + data = getappdata(fig,'data'); + monitor.Lr = L2; + data.monitor = monitor; + setappdata(fig,'data',data); + plotGSDdata(fig,'monitor'); + plotMatrixdata(fig,'monitor'); + end + + boolUpdateBoxList = true; + closeSurface = false; + end + + if monitor.por_cur <= por_RequireTouch || r <= r_RequireTouch + monitor.boolMustTouch = true; + end + + % reset current voxel increment, + % necessary to prevent from overestimating if + % placing fails + incVoxel = 0; + incMargin = 0; + + if (mod(monitor.stat(4),nMod_UpdateIndexList) == nMod_UpdateIndexList-1 ) + monitor.binStat(4,i) = max([monitor.binStat(4,i) monitor.stat(4)]); + monitor.voxHist(2,1:i) = monitor.nVox(1); +% plotting = update_PackingMonitor(M,L2,plotting,monitor); + end + + % draw a new center position based on the center of an already placed grain + if boolDrawFromGrainList + % draw an already placed grain center point + ind1 = randi([1 monitor.n-1]); + cBase = xyzr0(ind1,1:3); + + % define shift distance + vRad = round((xyzr0(ind1,4) + r) / domain.dx); + + % draw shift direction + vDir = 2*rand(1,3) - 1; + vDir = vDir / sqrt(sum(vDir.^2)); + + %apply shift + center = round(cBase + vDir*vRad); + if any(center < (r/domain.dx)+1) || any([center(1)>szM(1)-marg center(2)>szM(2)-marg center(3)>szM(3)-marg]) % org:(center < 1) + continue; + end + else + % draw grain center from list of vacant/free voxels + if (monitor.iRandPos > monitor.nRandPos) || boolUpdateBoxList + % fprintf('end of list reached at position %d - refreshing index\n',monitor.nRandPos); + monitor.log = [monitor.log sprintf('%s: End of list reached at position %d -> Updating index list\n',datestr(now,'dd.mm.yy HH:MM'),monitor.nRandPos)]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + if isgui + data = getappdata(fig,'data'); + monitor.Lr = L2; + data.monitor = monitor; + setappdata(fig,'data',data); + plotMatrixdata(fig,'monitor'); + end + + [Mindex,~] = updateIndexList('std',M,marg/2,r,xyzr0,domain,grains); + clear MtmpVal; + + % sync with valid grain center positions + Mindex = Mindex(M_valCtr(Mindex) == true); + MvN = numel(Mindex); + + if MvN<=1 + % if this happens you should stop the calculation + disp(' '); + disp('updateIndexList: no free voxels'); + end + monitor.log = [monitor.log sprintf('%s: Current porosity: %3.2f\n',datestr(now,'dd.mm.yy HH:MM'),monitor.por_cur)]; + monitor.log = [monitor.log sprintf('%s: Updated index list: %d free voxels left\n',datestr(now,'dd.mm.yy HH:MM'),MvN)]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + if isgui + data = getappdata(fig,'data'); + monitor.Lr = L2; + data.monitor = monitor; + setappdata(fig,'data',data); + plotMatrixdata(fig,'monitor'); + end + + listRandPos = unique(randi([1,MvN],[1 1e6])); + monitor.iRandPos = 1; + monitor.nRandPos = length(listRandPos); + listRandPos = listRandPos(randperm(monitor.nRandPos)); + boolUpdateBoxList = false; + Mindex = Mindex(listRandPos); + end + + [i1,i2,i3] = ind2sub(size(M),Mindex(monitor.iRandPos)); + center = [i1 i2 i3]; + monitor.iRandPos = monitor.iRandPos+1; + + end + + % move the grain to the current center point + spnew = sphere + [center(1)*tmpOnesA ... + center(2)*tmpOnesA .... + center(3)*tmpOnesA]; + + % also move the larger grain to the current center point + spnewB = sphereB + [center(1)*tmpOnesB ... + center(2)*tmpOnesB .... + center(3)*tmpOnesB]; + + try + % get indices of the current grain into M + index = sub2ind(size(M), spnew(:,1), spnew(:,2), spnew(:,3)); + % indices of the larger grain + indexB = sub2ind(size(M), spnewB(:,1), spnewB(:,2), spnewB(:,3)); + catch + disp('Something went utterly wrong.'); + end + % sub matrices for testing + boolFree = ~any(M(index(:))); +% boolTouch = ~monitor.boolMustTouch || (sum(M(indexB(:)))>monitor.nMinTouch); + if monitor.boolMustTouch + if sum(M(indexB(:)))>monitor.nMinTouch + boolTouch = true; + else + boolTouch = false; + end + else + boolTouch = true; + end + + monitor.arrFailStat(1) = monitor.arrFailStat(1)+1; + if boolFree && boolTouch + + incMargin = ~M_valCtr(index); + incMargin = sum(incMargin(:)); + incVoxel = grains.binVol(i)-incMargin; + + % mark the new grain + M(index) = true; + + % label it with radius + L2(index) = r; + + % append to coordinate list + xyzr0(monitor.n,1:4) = [center, r]; + + % increase current bin counter + nb = nb + 1; + + % increase global counter + monitor.n = monitor.n + 1; + + monitor.binStat(4,i) = max([monitor.binStat(4,i) monitor.stat(4)]); + + % reset the current tries per grain counter + monitor.stat(4) = 0; + else + % count tries where grain intersected already + % existing grain + monitor.stat(3) = monitor.stat(3) + 1; + monitor.arrFailStat(2:3) = monitor.arrFailStat(2:3) + [~boolFree ~boolTouch]; + end + + if size(xyzr0,1)-monitor.n < 10 + tmpAdd = round(0.1*size(xyzr0,1)); + xyzr0 = cat(1,xyzr0,-1*ones(tmpAdd,4)); + monitor.nxyzr0 = size(xyzr0,1); + end + + % update number of used voxels in box / in margin + monitor.nVox = monitor.nVox + [incVoxel incMargin]; + + monitor.por_cur = 1-monitor.nVox(1)/domain.VOL0; + % timing + monitor.t1 = toc; + + if (mod(monitor.stat(1),nDumpUpdateCurBin) == 0) || (mod(round(monitor.t1),params.dumpSec) == 0) || (monitor.stat(1) == 1) + monitor.i = i; % update coutner for current grain size bin +% monitor = printProgress(monitor); + end + + if (mod(round(monitor.t1),params.updateVisualSec) == 0) +% plotting = update_PackingMonitor(M,L2,plotting,monitor); + end + + % the current grain could not be set after 1e5 tries + + if mod(monitor.stat(4),monitor.threshSwapListBox) == monitor.threshSwapListBox-1 &&... + (iSwapListBox < monitor.nSwapListBoxMax) && monitor.boolMustTouch + boolDrawFromGrainList = ~boolDrawFromGrainList; + + if ~boolDrawFromGrainList + strDrawStyle = 'box-based'; + boolUpdateBoxList = true; + else + strDrawStyle = 'grain-based'; + end + monitor.log = [monitor.log sprintf('%s: Switch to %s drawing.\n',datestr(now,'dd.mm.yy HH:MM'),strDrawStyle)]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + end + + if monitor.stat(4) > monitor.threshMaxTry + monitor.log = [monitor.log sprintf('%s: Aborting bin: max. threshold %d/%d is reached.\n',... + datestr(now,'dd.mm.yy HH:MM'),monitor.stat(4),monitor.threshMaxTry)]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + break; + end + + if monitor.por_cur <= monitor.poro_final + monitor.log = [monitor.log sprintf('%s: Aborting bin: porosity of %4.2f%% is reached.\n',... + datestr(now,'dd.mm.yy HH:MM'),monitor.por_cur)]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + break; + end + end + + % the current bin is done (all grains of this size have been placed) + monitor.nLstVox = monitor.nVox(1); + + monitor.log = [monitor.log sprintf('%s: Finished bin: placed %d of %d voxels.\n',... + datestr(now,'dd.mm.yy HH:MM'),monitor.nVox(1),monitor.nVoxAim(i))]; + showLogInfo(monitor.log,isgui,gui); + pause(0.01); + if isgui + data = getappdata(fig,'data'); + monitor.Lr = L2; + data.monitor = monitor; + setappdata(fig,'data',data); + plotGSDdata(fig,'monitor'); + plotMatrixdata(fig,'monitor'); + end + if monitor.stat(4) > monitor.threshMaxTry || monitor.por_cur <= monitor.poro_final + break; + end +end + +monitor.log = [monitor.log sprintf('%s: Finished last bin.\n',datestr(now,'dd.mm.yy HH:MM'))]; +showLogInfo(monitor.log,isgui,gui); +pause(0.01); + +str1 = 'RUN - placeGrains: finished setting grains. '; +if isgui + set(gui.text_handles.Status,'String', str1); +else + disp(str1); +end + +% total run time +t = toc; + +% finalize the output data +domain.xyzr0 = xyzr0; + +% all matrices with margin +domain.final{1}.M = M; +if ~params.boolOmitLn + % reset remaining empty voxels in margin + L1(L1 == -1) = 0; + domain.final{1}.Ln = L1; +end +domain.final{1}.Lr = L2; +domain.porosity_final = 1-sum(M(domain.kEvalPoro))/domain.VOL0; + +% printStat(domain,monitor.stat,t); + +statStruct.porosity_final = domain.porosity_final; +statStruct.runtimeMin = t/60; +statStruct.stat = monitor.stat; +domain.statB = statStruct; +domain.monitor = monitor; + +% domain.plotting = plotting; + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/placeWater.m b/functions/placeWater.m new file mode 100644 index 0000000..907dece --- /dev/null +++ b/functions/placeWater.m @@ -0,0 +1,596 @@ +function [domain,grains,params] = placeWater(domain,grains,params,varargin) +%placeWater places all water voxels within the domain +% +% Syntax: +% [domain,grains,params] = placeGrainsFull(domain,grains,params) +% +% Inputs: +% domain +% grains +% params +% varargin +% +% Outputs: +% domain +% grains +% params +% +% Example: +% [domain,grains,params] = placeWater(domain,grains,params,src) +% +% Other m-files required: +% none +% +% Subfunctions: +% getSatProfile +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% check if called from GUI +isgui = false; +if nargin > 3 + src = varargin{1}; + % get GUI handle + fig = ancestor(src,'figure','toplevel'); + isgui = true; + % get GUI data + gui = getappdata(fig,'gui'); +else + gui = 0; +end + +n = find(domain.xyzr0(:,end)>0,1,'last'); +if isempty(n) + n = 0; +end +n = n+1; +n_start = n; + +log = domain.monitor.log; +log = [log sprintf(' \n')]; +log = [log sprintf('%s: Start placing water voxels.\n',datestr(now,'dd.mm.yy HH:MM'))]; +showLogInfo(log,isgui,gui); +pause(0.01); + +if ~params.useSatProfile % random + % porosity goal + % now we only add water voxels until the final air volume is + % reached + poro_final = domain.VolSpeciesAIR; + + % global grain counter + % n_start = max(max(domain.final{1}.Ln(:))); + + % index of r bin class to set (usually the two smallest ones: + % single voxel and 7 voxel crosses) + idr = 1; + rbins = grains.rbins(idr); + nbins = grains.nbins(idr); + binVol = grains.binVol(idr); + + % get the matrices with the margin + M = domain.final{1}.M; + if ~params.boolOmitLn + L1 = domain.final{1}.Ln; + end + L2 = domain.final{1}.Lr; + M_valCtr = domain.final{1}.M_valCtr; + + % get the coordinate lists + xyzr0 = domain.xyzr0; + % margin width + marg = domain.marg; + + % estimate how many voxel to set globally to reach desired porosity + % v_to_add = numel(domain.final{2}.M(:)) - sum(domain.final{2}.M(:)) - round(numel(domain.final{2}.M(:))*poro_final); + % v_to_add = domain.VOL0 - (sum(domain.final{2}.M(:)) - domain.VOLmask) - round(domain.VOL0*poro_final); + % v_to_add = domain.VOL0 - (sum(domain.final{2}.M(:)) - domain.VOLmask) - round(domain.VOL0*poro_final); + v_to_add = domain.VOL0 - (sum(domain.final{1}.M(domain.kEvalPoro)) - round(domain.VOL0*poro_final)); + + nVoxMatrix = sum(domain.final{1}.M(domain.kEvalPoro)); + nVoxExisting = sum(domain.final{1}.Lr(domain.kEvalPoro) == params.ID_MASKED.Water.Lr); + nVoxWaterTarget = round(domain.VOL0*domain.VolSpeciesH2O); + nVoxWaterToAdd = nVoxWaterTarget-nVoxExisting; + v_to_add = nVoxWaterToAdd; + + % estimate grains to add to reach desired porosity + some extra + g_to_add = round(round(v_to_add/sum(binVol))*1.1); + + nbins = round(g_to_add/10); + + % extend point coordinate matrices accordingly + xyzr0 = [xyzr0; zeros(g_to_add,4)]; + + % make an initial index list + log = [log sprintf('%s: Create initial index list.\n',datestr(now,'dd.mm.yy HH:MM'))]; + showLogInfo(log,isgui,gui); + pause(0.01); + [Mindex,~] = updateIndexList('std',M,marg/2,rbins(1),xyzr0,domain,grains); + + % sync with valid grain center positions + Mindex = Mindex(M_valCtr(Mindex) == true); + clear M_valCtr; + MvN = numel(Mindex); + + % list(1).Mindex = Mindex; + % list(1).MvN = MvN; + + + % start porosity + % poro = domain.porosity_final; + + % continuous grain counter + n = n_start + 1; + % statistics + stat = [0 0 0 0]; + nVoxWaterAdded = 0; + + arrPackVel = zeros(2,2); + arrPackVel(2,:) = [toc nVoxWaterAdded]; + velPackMax = 0; + + % nDumpUpdateCurBin = max([1 round(nVoxWaterToAdd/params.dumpsPerBin)]); + params.dump = 10000; + % while poro > poro_final + while nVoxWaterAdded < nVoxWaterToAdd + + % the larger grains first + for i = numel(rbins):-1:1 + % global counter + % current radius of grain in [m] + r = rbins(i); + % radius in lattice units + r2 = ceil(r/domain.dx); + % current grain + sphere = getSubBodyCoords(grains.shape,grains.axes,r,domain.dx); + % a grain that is one lattice unit larger + sphereB = getSubBodyCoords(grains.shape,grains.axes,2*r,domain.dx); + + tmpOnesA = ones(size(sphere,1),1); + tmpOnesB = ones(size(sphereB,1),1); + + nb = 1; + while nb <= nbins(i) + % global counter + stat(1) = stat(1) + 1; + stat(4) = stat(4) + 1; + + % update indexList every xxx tries + if mod(stat(1),5e5) == 0 + log = [log sprintf('%s: Updating index list.\n',datestr(now,'dd.mm.yy HH:MM'))]; + showLogInfo(log,isgui,gui); + pause(0.01); + [Mindex,MvN] = updateIndexList('std',M,marg/2,rbins(1),xyzr0,domain,grains); + % list(1).Mindex = Mindex; + % list(1).MvN = MvN; + if MvN<=1 + % if this happens you should stop the calculation + disp('placWater: updateIndexList: no free voxels'); + end + end + + % draw a center point out of the list + ind1 = randi([1 MvN]); + [i1,i2,i3] = ind2sub(size(M),Mindex(ind1)); + center = [i1 i2 i3]; + + % move the grain to the current center point + spnew = sphere + [center(1)*tmpOnesA ... + center(2)*tmpOnesA .... + center(3)*tmpOnesA]; + + % also move the larger grain to the current center point + spnewB = sphereB + [center(1)*tmpOnesB ... + center(2)*tmpOnesB .... + center(3)*tmpOnesB]; + + % get indices of the current grain into M + index = sub2ind(size(M), spnew(:,1), spnew(:,2), spnew(:,3)); + % indices of the larger grain + indexB = sub2ind(size(M), spnewB(:,1), spnewB(:,2), spnewB(:,3)); + + % sub matrices for testing + A = M(index); + B = M(indexB); + + % if the current water voxel touches nothing (sum(A)==0) and + % the larger "grain" touches an already existing grain + % (sum(B)>0) then place it + if sum(A(:)) == 0 && sum(B(:))>0 + % mark the new grain + M(index) = true; + % and label it + if ~params.boolOmitLn + L1(index) = n; % with unique counter + end + L2(index) = 99; % water marker + % coordinate lists + % xyzr(n,1:4) = [(center-1-marg)*domain.dx, 99]; + xyzr0(n,1:4) = [center, 99]; + % increase counters + % current bin + nb = nb + 1; + % global counter + n = n + 1; + + % total voxel counter + nVoxWaterAdded = nVoxWaterAdded + numel(index); + % reset the current tries per grain counter + stat(4) = 0; + else + % count tries where grain intersected already + % existing grain + stat(3) = stat(3) + 1; + end + + + % poro = 1-sum(M(domain.kEvalPoro))/domain.VOL0; + % pAir = 1-(nVoxMatrix + nVoxWaterAdded)/domain.VOL0; + + % output some statistics from time to time + if mod(stat(1),params.dump) == 0 + % timing + t1 = toc; + % disp(['current porosity : ',sprintf('%4.3f',poro)]); + % disp(['current water : ',num2str(nb),... + % ' / ',num2str(nbins(i))]); + + CurWater = nVoxWaterAdded/nVoxWaterToAdd; + str = ['RUN - placeWater: water voxels: ',sprintf('%d',round(100*CurWater)),'%']; + if isgui + set(gui.text_handles.Status,'String', str); + else + disp(str); + end + pause(0.001); + + + % fprintf('current water : [%s] %4.2f%%(%4dk/%4dk added)\n',getProgbar(dblProgCurWater,50),100*dblProgCurWater,round([nVoxWaterAdded,nVoxWaterToAdd]/1000)); + % disp(['total tries : ',num2str(stat(1))]); + % disp(['center hits : ',num2str(stat(2))]); + % disp(['occupied hits : ',num2str(stat(3))]); + % disp(['current tries : ',num2str(stat(4))]); + % + % arrPackVel(1,:) = arrPackVel(2,:); + % arrPackVel(2,:) = [t1 nVoxWaterAdded]; + % velPackCur = 1e-3*diff(arrPackVel(:,2))/diff(arrPackVel(:,1)); + % velPackMax = max([velPackMax velPackCur]); + % + % % fprintf('cur. packing vel.: [%s] %4.3fk vox/s (%6.4f%%/min)\n',getProgbar(velPackCur/velPackMax,nBar),[velPackCur,100*60*1e3*velPackCur/domain.VOL0]); + % + % disp(['elapsed time : ',sprintf('%4.2f',t1/60),' min']); + % tEst = (nVoxWaterToAdd-nVoxWaterAdded)/(1e3*velPackCur); + % fprintf('result estimated for %s (%4.2f min)\n',datestr(now+tEst/86400,'HH:MM:SS, dd.mm.yyyy'),tEst/60); + end + + % the current grain could not be set after 1e5 tries + % break -> should actually never happen + if stat(4) > 1e6 + disp(' '); + disp(['current tries : ',num2str(stat(4))]); + disp('stopping here because the current grain could not be placed'); + disp('try a new random seed or adjust the corr_fac in prepareDomain.m.'); + break; + end + if nVoxWaterAdded >= nVoxWaterToAdd + break; + end + end + if stat(4) > 1e6 || nVoxWaterAdded >= nVoxWaterToAdd + break; + end + end + if stat(4) > 1e6 || nVoxWaterAdded >= nVoxWaterToAdd + break; + end + end + % total run time + t = toc; + + % finalize the output data + % and remove possible empty fields + Nxyz = find(xyzr0(:,4)==0,1,'first')-1; + if ~isempty(Nxyz) + xyzr0 = xyzr0(1:Nxyz,:); + end + + % save the number of water voxels + grains.n_water = sum(L2(:)==99); + + domain.xyzr0 = xyzr0; + % all matrices with margin + domain.final{1}.M = M; + if ~params.boolOmitLn + domain.final{1}.Ln = L1; + end + domain.final{1}.Lr = L2; + % matrices without margin + domain.final{2}.M = M(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); + if ~params.boolOmitLn + domain.final{2}.Ln = L1(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); + end + domain.final{2}.Lr = L2(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); + % update final porosity + domain.porosity_final = 1-sum(M(domain.kEvalPoro))/domain.VOL0; + domain.porosity_final_water = sum(M(L2==99))/domain.VOL0; + + + log = [log sprintf(' \n')]; + log = [log sprintf('%s: Final porosity (air): %3.2f\n',datestr(now,'dd.mm.yy HH:MM'),domain.porosity_final)]; + log = [log sprintf('%s: Water Voxels: %d\n',datestr(now,'dd.mm.yy HH:MM'),grains.n_water)]; + log = [log sprintf('%s: Final porosity (h2o): %3.2f\n',datestr(now,'dd.mm.yy HH:MM'),domain.porosity_final_water)]; + showLogInfo(log,isgui,gui); + pause(0.01); + +else % profile + + % get saturation profile + Sat = getSatProfile(domain,params); + params.sat_profile = Sat; + + % margin width + marg = domain.marg; + + % get the matrices with the margin + M = domain.final{1}.M; + if ~params.boolOmitLn + L1 = domain.final{1}.Ln; + end + L2 = domain.final{1}.Lr; + MvC =domain.final{1}.M_valCtr; + % get the coordinate lists + % xyzr = domain.xyzr; + xyzr0 = domain.xyzr0; + + poro = domain.porosity_final; + sliceV = round(numel(domain.final{1}.M(:,:,1))*poro); + % estimate how many water voxel to set globally to create the + % desired profile + v_to_add = round(sum(sliceV*Sat)); + + % estimate water "grains" to add + some extra + g_to_add = round(v_to_add*1.1); + + % extend point coordinate matrices + % xyzr = [xyzr; zeros(g_to_add,4)]; + xyzr0 = [xyzr0; zeros(g_to_add,4)]; + + % global grain counter + % n_start = max(max(domain.final{1}.Ln(:))); + + % n = n_start; + % loop over all interior slices starting at the bottom (highest saturation) + % so we need to flip "Sat" as it is defined from top to bottom +% Sat = fliplr(Sat); + for zi = marg+1:size(M,3)-marg + + % get current depth slice (without margin) + M1 = squeeze(M(marg+1:size(M,1)-marg,marg+1:size(M,2)-marg,zi)); + if ~params.boolOmitLn + L1s = squeeze(L1(marg+1:size(M,1)-marg,marg+1:size(M,2)-marg,zi)); + end + L2s = squeeze(L2(marg+1:size(M,1)-marg,marg+1:size(M,2)-marg,zi)); + MvCs = squeeze(MvC(marg+1:size(MvC,1)-marg,marg+1:size(MvC,2)-marg,zi)); + + % count the empty voxels in the current layer + c0 = sum(M1(:)==0); + + % how many voxel to mark as water in this layer + cw = round(c0*Sat(zi-marg)); + + % if we have to place water voxels in this layer proceed + % the second check test if there are at least some grains in the + % slice, otherwise it won't work for a dipping surface (this needs + % to be corrected in a future version anyway) + if cw > 0 && sum(M1(:))>0 + stat = [0 0]; + + % make a list with all empty voxels + M2 = M1(:); + ic = (1:numel(M2))'; + ic(M2) = []; + + % water voxels set counter + sw = 0; + % neighbor voxels + neigh = zeros(8,2); + while sw < cw + stat(1) = stat(1) + 1; + + if mod(stat(1),c0) == 0 + % disp('making new list') + % make a list with all empty voxels + M2 = M1(:); + ic = (1:numel(M2))'; + ic(M2) = []; + end + + % draw a random empty location + index = randi([1 numel(ic)],1); + + % get the neighbors: + % current center coord + [i1,i2] = ind2sub(size(M1),ic(index)); + % neighbor coords in 2D + neigh(1,1:2) = [i1-1 i2-1]; + neigh(2,1:2) = [i1 i2-1]; + neigh(3,1:2) = [i1+1 i2-1]; + neigh(4,1:2) = [i1-1 i2]; + neigh(5,1:2) = [i1+1 i2]; + neigh(6,1:2) = [i1-1 i2+1]; + neigh(7,1:2) = [i1 i2+1]; + neigh(8,1:2) = [i1+1 i2+1]; + + % remove any neighbor point that is outside of the container + [ix1,~] = find(neigh(:,1)<1 | neigh(:,1)>size(M1,1)); + [ix2,~] = find(neigh(:,2)<1 | neigh(:,2)>size(M1,2)); + ix = unique([ix1;ix2]); + neigh(ix,:) = []; + + % global coordinates of the neighbors + n_ind = sub2ind(size(M1), neigh(:,1), neigh(:,2)); + + % only place it if the current position is not occupied and at + % least one neighbor is not air (empty) + if ~M1(ic(index)) && sum(M1(n_ind))>0 + sw = sw + 1; + + % mark the new grain + M1(ic(index)) = true; + % global counter + n = n + 1; + % and label it + if ~params.boolOmitLn + L1s(ic(index)) = n; + end + L2s(ic(index)) = 99; + + % update coordinate lists + coord = [i1 i2 zi]; + % xyzr(n,1:4) = [(coord-1-marg)*domain.dx, 99]; + xyzr0(n,1:4) = [coord, 99]; + else + stat(2) = stat(2) + 1; + end + + % if mod(stat(1),round(cw))==0 + % clc; + % % timing + % t1 = toc; + % disp(['current slice : ',sprintf('%d',zi-marg),'/',num2str(int32(domain.nz0))]); + % disp(['total tries : ',num2str(stat(1))]); + % disp(['center hits : ',num2str(stat(2))]); + % disp(['placed grains : ',num2str(n-n_start)]); + % disp(['elapsed time : ',sprintf('%4.2f',t1/60),' min']); + % end + end + end + + str = ['RUN - placeWater: slice: ',sprintf('%d / %d',zi-marg,size(M,3)-2*marg)]; + if isgui + set(gui.text_handles.Status,'String', str); + else + disp(str); + end + pause(0.001); + + % insert the current slice back into the larger block + M(marg+1:size(M,1)-marg,marg+1:size(M,2)-marg,zi) = M1; + if ~params.boolOmitLn + L1(marg+1:size(M,1)-marg,marg+1:size(M,2)-marg,zi) = L1s; + end + L2(marg+1:size(M,1)-marg,marg+1:size(M,2)-marg,zi) = L2s; + end + % total run time + t = toc; + + % finalize the output data + % and remove possible empty fields + Nxyz = find(xyzr0(:,4)==0,1,'first')-1; + if ~isempty(Nxyz) + % xyzr = xyzr(1:Nxyz,:); + xyzr0 = xyzr0(1:Nxyz,:); + end + + % save the number of water voxels + grains.n_water = sum(L2(:)==99); + + % finalize the output data + % remove possible empty fields + Nxyz = find(xyzr0(:,4)==0,1,'first')-1; + if ~isempty(Nxyz) + % xyzr = xyzr(1:Nxyz,:); + xyzr0 = xyzr0(1:Nxyz,:); + end + + % domain.xyzr = xyzr; + domain.xyzr0 = xyzr0; + % all matrices with margin + domain.final{1}.M = M; + if ~params.boolOmitLn + domain.final{1}.Ln = L1; + end + domain.final{1}.Lr = L2; + % matrices without margin + domain.final{2}.M = M(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); + if ~params.boolOmitLn + domain.final{2}.Ln = L1(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); + end + domain.final{2}.Lr = L2(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); + % update final porosity + domain.porosity_final = 1-sum(M(domain.kEvalPoro))/domain.VOL0; + domain.porosity_final_water = sum(M(L2==99))/domain.VOL0; + + log = domain.monitor.log; + log = [log sprintf(' \n')]; + log = [log sprintf('%s: Final porosity (air): %3.2f\n',datestr(now,'dd.mm.yy HH:MM'),domain.porosity_final)]; + log = [log sprintf('%s: Water Voxels: %d\n',datestr(now,'dd.mm.yy HH:MM'),grains.n_water)]; + log = [log sprintf('%s: Final porosity (h2o): %3.2f\n',datestr(now,'dd.mm.yy HH:MM'),domain.porosity_final_water)]; + showLogInfo(log,isgui,gui); + pause(0.01); +end + +log = [log sprintf('%s: Finished placing Water.\n',datestr(now,'dd.mm.yy HH:MM'))]; +showLogInfo(log,isgui,gui); +str = 'RUN - FINISHED.'; +if isgui + set(gui.text_handles.Status,'String', str); +else + disp(str); +end +pause(0.001); + + +end + +function Sat = getSatProfile(domain,params) + +switch params.satProfileType + + case 'linear' + % linear 0 -> 1 + slope = (params.satBounds(2)-params.satBounds(1))/(domain.nz0-1); + z = 0:1:domain.nz0-1; + Sat = slope*z+params.satBounds(1); + + case 'exponential' + B = 20; % degree of curvature + + z = linspace(0,1,domain.nz0); + y1 = params.satBounds(1); + y2 = params.satBounds(2); + % normalizes z + r = (z - z(1)) / (z(end) - z(1)); + C = B^(z(end) - z(1)); + Sat = ((y2-y1)*C.^r + y1*C-y2)/(C-1); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/prepareDomain.m b/functions/prepareDomain.m new file mode 100644 index 0000000..f8d05ef --- /dev/null +++ b/functions/prepareDomain.m @@ -0,0 +1,385 @@ +function [domain,params] = prepareDomain(domain,grains,params,varargin) +%prepareDomain generates the domain data based on the user entries +% +% Syntax: +% [domain,params] = prepareDomain(domain,grains,params) +% +% Inputs: +% domain +% grains +% params +% +% Outputs: +% domain +% params +% +% Example: +% [domain,params] = prepareDomain(domain,grains,params) +% +% Other m-files required: +% getSubBodyCoords +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% check if called from GUI +isgui = false; +if nargin > 3 + src = varargin{1}; + % get GUI handle + fig = ancestor(src,'figure','toplevel'); + isgui = true; + % get GUI data + gui = getappdata(fig,'gui'); +end + +str = 'INIT - prepareDomain: init voxel volume'; +if isgui + set(gui.text_handles.Status,'String', str); +else + disp(str); +end +pause(0.001); + +% original volume of the main container [m^3] +domain.Vbox = domain.xm*domain.ym*domain.zm; +% matrix volume [m^3] +domain.Vmatrix = (1 - domain.porosity)*domain.Vbox; + +% number of inner voxels in each direction +domain.nx0 = round(domain.xm/domain.dx) + 1; +domain.ny0 = round(domain.ym/domain.dx) + 1; +domain.nz0 = round(domain.zm/domain.dx) + 1; + +% if there is an inner margin mask increase the number of inner voxels +if params.applyMarginMask + domain.nx0 = domain.nx0 + 2; + domain.ny0 = domain.ny0 + 2; + domain.nz0 = domain.nz0 + 1; +end +% the voxel volume without the margin +domain.VOL0 = domain.nx0*domain.ny0*domain.nz0; + +% margin extends the domain on all sides depending on the largest grain +% radius +domain.marg = 2*ceil((grains.rmax+domain.dx)/domain.dx); +marg = domain.marg; + +% how many elements in each spatial direction (incl. margin on all sides) +domain.nx = domain.nx0 + 2*domain.marg; +domain.ny = domain.ny0 + 2*domain.marg; +domain.nz = domain.nz0 + 2*domain.marg; + +% complete voxel volume +VOL2 = domain.nx*domain.ny*domain.nz; + +Vol0b = (domain.nx0+marg/2)*(domain.ny0+marg/2)*(domain.nz0+marg/2); +% margin volume (NOTE: why is it not VOL2-VOL0?) +VOLmarg = VOL2-Vol0b; + +% take care of target +if params.useTarget + target = params.target; + target_vol = sum(target(:)>1); + params.VOLtarget = target_vol; +else + params.VOLtarget = 0; +end + +% set up matrices for storing the final positions of the grains +% logical matrix to mark occupied voxels +M = false(domain.nx,domain.ny,domain.nz); + +% logical matrix to mark valid grain center positions +M_valCtr = true(domain.nx,domain.ny,domain.nz); + +% Label matrix for each radius bin +L2 = zeros(domain.nx,domain.ny,domain.nz); + +% create indices for margin to check voxel positions +tmpInd = reshape(1:numel(L2),size(L2)); +kInner = tmpInd(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg); +kInner = kInner(:); +kMargin = setdiff(tmpInd,kInner); +% at these voxel no grains centers can be set +M_valCtr(kMargin) = false; + +clear tmpInd kMarginA kMarginB + +%% TARGETS +str = 'INIT - prepareDomain: apply targets'; +if isgui + set(gui.text_handles.Status,'String', str); +else + disp(str); +end +pause(0.001); + +% take care of target +if params.useTarget + index = sub2ind(size(M), params.targetIDX(:,1)+marg,... + params.targetIDX(:,2)+marg, params.targetIDX(:,3)+marg); + % mark target voxels as occupied in M + M(index) = true; + % mark target voxel as invalid for new grain centers + M_valCtr(index) = false; + + % mark target voxels in Lr + L2(index) = params.ID_MASKED.Target.Lr; +else + xstart = round(size(M,1)/2); + ystart = round(size(M,2)/2); + zstart = round(size(M,3)/2); + tdims = zeros(1,3); +end + +%% MASKS +str = 'INIT - prepareDomain: apply mask'; +if isgui + set(gui.text_handles.Status,'String', str); +else + disp(str); +end +pause(0.001); + +% mask regions if defined +if params.use_mask + % check for any dip value + if sum(params.maskdipx+params.maskdipy) > 0 + % create a standard mask + mask = struct('arrTiltDegXY',[params.maskdipx params.maskdipy],... + 'arrBaseXYZ',[0 0 0],... + 'zBaseMinTop',domain.marg*domain.dx); + % several masks may be applied subsequently + % here we only add the one for a tilted surface + else + % create a dummy mask + mask = struct('arrTiltDegXY',[0 0],... + 'arrBaseXYZ',[0 0 0],... + 'zBaseMinTop',domain.marg*domain.dx); + end + params.masks = {mask}; +end + +if params.use_mask + cellMasks = params.masks; + nMask = numel(cellMasks); + + for iMask = 1:nMask + curMask = params.masks{iMask}; + if isfield(curMask,'arrMinMaxXYZ') + arrMinMaxXYZ = curMask.arrMinMaxXYZ; + + kMinMax = round(arrMinMaxXYZ/domain.dx); + + kX = domain.marg+1+(kMinMax(1,1):kMinMax(1,2)); + kY = domain.marg+1+(kMinMax(2,1):kMinMax(2,2)); + kZ = domain.marg+1+(kMinMax(3,1):kMinMax(3,2)); + + if params.applyMarginMask + kX = kX+1; + kY = kY+1; + end + + M_valCtr(kX,kY,kZ) = false; + end + + if isfield(curMask,'arrTiltDegXY') + maxX = domain.dx*domain.nx; + maxY = domain.dx*domain.ny; + [tmpY,tmpX,tmpZ] = meshgrid(domain.dx*(1:domain.ny),... + domain.dx*(1:domain.nx),domain.dx*(1:domain.nz)); + + arrSlope = curMask.arrTiltDegXY; + + if isfield(curMask,'zBaseMinTop') + zBase = curMask.zBaseMinTop+abs((maxX-curMask.arrBaseXYZ(1))*tan(arrSlope(1)*pi/180)... + + abs(maxY-curMask.arrBaseXYZ(2))*tan(arrSlope(2)*pi/180)); + curMask.arrBaseXYZ(3) = zBase; + end + arrBase = curMask.arrBaseXYZ; + + + tmpSel = tmpZ <= (arrBase(3)+(arrBase(1)-tmpX)*tan(arrSlope(1)*pi/180)... + + (arrBase(2)-tmpY)*tan(arrSlope(2)*pi/180)); + clear tmpY tmpX tmpZ + + % mark masked region as invalid for new grain centers + M_valCtr(tmpSel) = false; + + % mark masked region as air in Lr + L2(tmpSel) = params.ID_MASKED.Air.Lr; + clear tmpSel; + end + end +end + +%% MARGIN MASK +str = 'INIT - prepareDomain: apply margin mask'; +if isgui + set(gui.text_handles.Status,'String', str); +else + disp(str); +end +pause(0.001); + +if params.applyMarginMask + % build x- MarginMask + kInnerX = domain.marg+(1:domain.nx0); + kInnerY = domain.marg+(1:domain.ny0); + kInnerZ = domain.marg+(1:domain.nz0); + + % 26.10.22: mask is part of margin + M([domain.marg,domain.nx-domain.marg+1],kInnerY,kInnerZ) = true; + M(kInnerX,[domain.marg,domain.ny-domain.marg+1],kInnerZ) = true; + M(kInnerX,kInnerY,domain.nz-domain.marg+1) = true; +end + +% until 26.10.22 +% now the volume in terms of voxel and accounting for the margin +% domain.VOL = sum(~M(:)); +% sync kInner with valid grain center positions +% (take care of masked regions +% kInner = kInner(M_valCtr(kInner)); +% innerM = M(kInner); +% domain.VOL0 = sum(~innerM(:)); +% domain.VOLmask = sum(innerM(:)); + +% 26.10.22: interpret only voxels as box volume at +% valid grain center positions at start +domain.VOL0 = sum(M_valCtr(:)); +domain.kEvalPoro = find(M_valCtr(:)); + +% VOL0matrix is later needed to find the total number of grains to create +% this particular matrix volume +% domain.VOLmatrix = round((1-domain.porosity)*domain.VOL); +domain.VOL0matrix = round((1-domain.porosity)*domain.VOL0); + +% all matrices with margin +domain.final{1}.M = M; +domain.final{1}.M_valCtr = M_valCtr; +domain.final{1}.Lr = L2; + +domain.porosity_final = 1-sum(domain.final{1}.M(domain.kEvalPoro))/domain.VOL0; + +% allocation for grain center coordinates and radius +% radius is always in real units [m] +% coordinates in real dimensions [m] + +% maximum numbers of grains to place inside the container +nmax = 50000; +nPreOcc = sum(M(:)); + +% xyzr = -1*ones(max([nmax nPreOcc]),4); +% coordinates in lattice units +xyzr0 = -1*ones(max([nmax nPreOcc]),4); + +str = 'INIT - prepareDomain: coord list of pre-allocated voxels:'; +if isgui + set(gui.text_handles.Status,'String', str); +else + disp(str); +end +pause(0.001); + +n = 1; +if nPreOcc > 0 + % detect margin + szM = size(M); + Mmarg = zeros(size(M)); + + dCalc = diff(M,1,1); + dAppl = cat(1,zeros([1,szM(2),szM(3)]),dCalc); + Mmarg(dAppl > 0) = 1; + dAppl = cat(1,dCalc,zeros([1,szM(2),szM(3)])); + Mmarg(dAppl < 0) = 1; + + + dCalc = diff(M,1,2); + dAppl = cat(2,zeros([szM(1),1,szM(3)]),dCalc); + Mmarg(dAppl > 0) = 1; + dAppl = cat(2,dCalc,zeros([szM(1),1,szM(3)])); + Mmarg(dAppl < 0) = 1; + + dCalc = diff(M,1,3); + dAppl = cat(3,zeros([szM(1),szM(2),1]),dCalc); + Mmarg(dAppl > 0) = 1; + dAppl = cat(3,dCalc,zeros([szM(1),szM(2),1])); + Mmarg(dAppl < 0) = 1; + + clear dCalc dAppl + + [xOcc,yOcc,zOcc] = ind2sub(size(M),find(Mmarg)); + clear Mmarg + + xyzOcc = cat(2,xOcc,yOcc,zOcc,zeros(size(xOcc))); + sphere = getSubBodyCoords(grains.shape,grains.axes,domain.dx,domain.dx); + nUpdate = round(size(xyzOcc,1)/1000); + for nn = 1:size(xyzOcc,1) + + spnew = [xyzOcc(nn,1)*ones(length(sphere),1) ... + xyzOcc(nn,2)*ones(length(sphere),1) .... + xyzOcc(nn,3)*ones(length(sphere),1)]; + [ix1,~] = find(spnew(:,1)size(M,1)-marg); + [ix2,~] = find(spnew(:,2)size(M,2)-marg); + + % in z-dimension, accept positions in upper margin + % to create a surface pattern + [ix3,~] = find(spnew(:,3)>size(M,3)-marg); + ix = unique([ix1;ix2;ix3]); + spnew(ix,:) = []; + + % get indices of the current sphere into M + % index = sub2ind(size(M), spnew(:,1), spnew(:,2), spnew(:,3)); + + center = xyzOcc(nn,1:3); + % xyzr(n,1:4) = [(center-1-marg)*domain.dx, domain.dx/2]; + xyzr0(n,1:4) = [center, domain.dx/2]; + n = n + 1; + + if mod(nn,nUpdate) == 0 + str = ['INIT - prepareDomain: coord list of pre-allocated voxels: ',sprintf('%d',round(100*nn/size(xyzOcc,1))),'%']; + if isgui + set(gui.text_handles.Status,'String', str); + else + disp(str); + end + pause(0.001); + end + + end + xyzr0 = unique(xyzr0,'rows'); +end + +domain.xyzr0 = xyzr0; +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/prepareVoxelGSD.m b/functions/prepareVoxelGSD.m new file mode 100644 index 0000000..b040c4f --- /dev/null +++ b/functions/prepareVoxelGSD.m @@ -0,0 +1,269 @@ +function grains = prepareVoxelGSD(domain,grains,varargin) +%prepareVoxelGSD generates the voxelised GSD input data +% +% Syntax: +% grains = prepareVoxelGSD(domain,grains,varargin) +% +% Inputs: +% domain +% grains +% varargin +% +% Outputs: +% grains +% +% Example: +% grains = prepareVoxelGSD(domain,grains,varargin) +% +% Other m-files required: +% getSubBodyCoords +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +% check if called from GUI +isgui = false; +if nargin > 2 + src = varargin{1}; + % get GUI handle + fig = ancestor(src,'figure','toplevel'); + isgui = true; + % get GUI data + gui = getappdata(fig,'gui'); +end + +if grains.ishistogram + % create a diameter binning vector considering the minimum grid + % discretization + dbins = domain.dx:domain.dx:grains.rmax*2; + % radius binning vector + rbins = dbins/2; + nbins = zeros(size(rbins)); + nvoxBins = zeros(size(rbins)); + + % get the voxel volume per individual grain radius + grains.binVol = zeros(1,numel(rbins)); + + % interpolate the input histogram on the radius binning vector + tmpCumVol = interp1(grains.hist_raw(:,1),grains.hist_raw(:,2),rbins); + fracBin = [tmpCumVol(1) diff(tmpCumVol)]; + + remainVox = 0; + cc = 0; + str2 = cell(1,1); + for i = fliplr(1:numel(rbins)) + cc = cc + 1; + sphere = getSubBodyCoords(grains.shape,grains.axes,rbins(i),domain.dx); + grains.binVol(i) = size(sphere,1); + nbins(i) = floor((remainVox + domain.VOL0matrix*fracBin(i))/grains.binVol(i)); + nvoxBins(i) = nbins(i)*grains.binVol(i); + remainVox = domain.VOL0matrix*sum(fracBin(i:end))-sum(nvoxBins(i:end)); + + str1 = ['INIT - prepareVoxelGSD: bin classes done: ',sprintf('%d',round(100*cc/numel(rbins))),'%']; + if cc == 1 + str2{1,1} = [sprintf('%s',datestr(now,'dd.mm.yy HH:MM')),' r bin class ',num2str(i),... + ' (',sprintf('%5.4f',rbins(i)),'m) ',sprintf('%d',nbins(i)),' grains']; + else + str2{end+1,1} = [sprintf('%s',datestr(now,'dd.mm.yy HH:MM')),' r bin class ',num2str(i),... + ' (',sprintf('%5.4f',rbins(i)),'m) ',sprintf('%d',nbins(i)),' grains']; + end + str2{end+1,1} = [sprintf('%s',datestr(now,'dd.mm.yy HH:MM')),' voxel used: ',sprintf('%d / %d',... + nvoxBins(i),round(domain.VOL0matrix*fracBin(i)))]; + str2{end+1,1} = ' '; + + if isgui + set(gui.text_handles.Status,'String', str1); + else + disp(str1); + end + showLogInfo(str2,isgui,gui); + pause(0.01); + + end + + % remove bins with no members + boolOK = nbins~=0; + rbins = rbins(boolOK); + nvoxBins = nvoxBins(boolOK); + grains.binVol = grains.binVol(boolOK); + nbins = nbins(boolOK); + + % TODO: why is this switch-off here? + % if ~any(rbins == domain.dx/2) + % rbins = [domain.dx/2 rbins]; + % nbins = [0 nbins]; + % end + + % ensure smallest bin class + if ~any(rbins == domain.dx) + rbins = [domain.dx rbins]; + nbins = [0 nbins]; + end + + % the voxel volume of all grains from the distribution + grains.VOLspheres = sum(grains.binVol.*nbins); + + % output data + grains.rbins = rbins; + grains.nbins = nbins; + grains.Nbins = nbins; + grains.nvoxBins = nvoxBins; + +else + % create a diameter binning vector considering the minimum grid + % discretization + dbins = domain.dx:domain.dx:grains.rmax*2; + % radius binning vector + rbins = dbins/2; + % get the counts per bin + % nbins = hist(grains.dia_raw,dbins); + % --- account for new Matlab behaviour of histogram vs hist + d = diff(dbins)/2; + edges = [dbins(1)-d(1), dbins(1:end-1)+d, dbins(end)+d(end)]; + edges(2:end) = edges(2:end)+eps(edges(2:end)); + % nbins = histcounts(grains.dia_raw,edges); + N = histcounts(grains.dia_raw,edges,'Normalization','cdf'); + + tmp_hist = [[0 rbins]' [0 N]']; + + do_old = false; + %% OLD WAY + if do_old + % remove bins with no members + rbins = rbins(nbins~=0); + nbins = nbins(nbins~=0); + + if ~any(rbins == domain.dx/2) + rbins = [domain.dx/2 rbins]; + nbins = [0 nbins]; + end + + if ~any(rbins == domain.dx) + rbins = [domain.dx rbins]; + nbins = [0 nbins]; + end + + % get the voxel volume per grain radius + grains.binVol = zeros(1,numel(rbins)); + for i = 1:numel(rbins) + sphere = getSubBodyCoords(grains.shape,grains.axes,rbins(i),domain.dx); + grains.binVol(i) = size(sphere,1); + end + % the voxel volume of all grains from the distribution + grains.VOLspheres = sum(grains.binVol.*nbins); + + % how many copies of the distribution we need to fill the matrix + grains.ncopies = domain.VOL0matrix/grains.VOLspheres; + + grains.rbins = rbins; + grains.nbins = nbins; + grains.Nbins = round(nbins*grains.ncopies); + grains.nvoxBins = grains.Nbins.*grains.binVol; + grains.nbins = grains.Nbins; + + %% NEW WAY - use cumulative histogram + else + nbins = zeros(size(rbins)); + nvoxBins = zeros(size(rbins)); + + % get the voxel volume per individual grain radius + grains.binVol = zeros(1,numel(rbins)); + + % interpolate the input histogram on the radius binning vector + tmpCumVol = interp1(tmp_hist(:,1),tmp_hist(:,2),rbins); + fracBin = [tmpCumVol(1) diff(tmpCumVol)]; + + remainVox = 0; + cc = 0; + for i = fliplr(1:numel(rbins)) + cc = cc + 1; + sphere = getSubBodyCoords(grains.shape,grains.axes,rbins(i),domain.dx); + grains.binVol(i) = size(sphere,1); + nbins(i) = round((remainVox + domain.VOL0matrix*fracBin(i))/grains.binVol(i)); + nvoxBins(i) = nbins(i)*grains.binVol(i); + remainVox = domain.VOL0matrix*sum(fracBin(i:end))-sum(nvoxBins(i:end)); + + str1 = ['INIT - prepareVoxelGSD: bin classes done: ',sprintf('%d',round(100*cc/numel(rbins))),'%']; + if cc == 1 + str2{1,1} = [sprintf('%s',datestr(now,'dd.mm.yy HH:MM')),' r bin class ',num2str(i),... + ' (',sprintf('%5.4f',rbins(i)),'m) ',sprintf('%d',nbins(i)),' grains']; + else + str2{end+1,1} = [sprintf('%s',datestr(now,'dd.mm.yy HH:MM')),' r bin class ',num2str(i),... + ' (',sprintf('%5.4f',rbins(i)),'m) ',sprintf('%d',nbins(i)),' grains']; + end + str2{end+1,1} = [sprintf('%s',datestr(now,'dd.mm.yy HH:MM')),' voxel used: ',sprintf('%d / %d',... + nvoxBins(i),round(domain.VOL0matrix*fracBin(i)))]; + str2{end+1,1} = ' '; + + if isgui + set(gui.text_handles.Status,'String', str1); + else + disp(str1); + end + showLogInfo(str2,isgui,gui); + pause(0.01); + + end + + % remove bins with no members + boolOK = nbins~=0; + rbins = rbins(boolOK); + nvoxBins = nvoxBins(boolOK); + grains.binVol = grains.binVol(boolOK); + nbins = nbins(boolOK); + + % TODO: why is this switch-off here? + % if ~any(rbins == domain.dx/2) + % rbins = [domain.dx/2 rbins]; + % nbins = [0 nbins]; + % end + + % ensure smallest bin class + if ~any(rbins == domain.dx) + rbins = [domain.dx rbins]; + nbins = [0 nbins]; + end + + % the voxel volume of all grains from the distribution + grains.VOLspheres = sum(grains.binVol.*nbins); + + % output data + grains.rbins = rbins; + grains.nbins = nbins; + grains.Nbins = nbins; + grains.nvoxBins = nvoxBins; + disp(sum(nvoxBins)/domain.VOL0); + end +end + +return + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . diff --git a/functions/updateIndexList.m b/functions/updateIndexList.m new file mode 100644 index 0000000..a03b615 --- /dev/null +++ b/functions/updateIndexList.m @@ -0,0 +1,174 @@ +function [indexList,N] = updateIndexList(method,M,marg,r,xyzr0,domain,grains) +%updateIndexList creates a list with free voxel positions within the domain +% +% Syntax: +% updateIndexList(method,M,marg,r,xyzr0,domain,grains) +% +% Inputs: +% method - string ('std' | 'hull' | 'hull_tight') +% M - matrix (marker matrix with occupied voxels) +% marg - scalar (with of margin in voxel units) +% r - scalar (current grain radius) +% xyzr0 - matrix (all already placed grains centers) +% domain - struct with domain data +% grains - struct with grain data +% +% Outputs: +% indexList - List of empty voxels where a grain center could be +% N - length of indexList +% +% Example: +% [list,~] updateIndexList('std',M,marg,r,xyzr0,domain,grains) +% +% Other m-files required: +% none +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +switch method + case 'std' + Mv = true(size(M)); + % now mark all inner voxels within for searching a new center point + r2 = ceil(r/domain.dx); + ma = 2*marg-r2; + marg = ma; + % mark all margin voxels + Mv(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg) = false; + % add all spheres from M + Mv(M) = true; + % indexList = (1:numel(Mv))'; + % indexList = [indexList(~Mv(:));indexList(Mv(:))]; + % N = numel(Mv(:))-sum(Mv(:)); + indexList_tmp = (1:numel(Mv))'; + indexList = indexList_tmp(~Mv(:)); + N = numel(indexList(:)); + + case 'hull' + % old way: mark only voxels in a certain grain hull + Mv = true(size(M)); + % now mark all inner voxels for searching a new center point + r2 = ceil(r/domain.dx); + ma = 2*marg-r2; + marg = ma; + + Mv(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg) = false; + + Nxyz = find(xyzr0(:,4)<0,1,'first')-1; + r_old = 1000; + + for nn = 1:Nxyz + r_now = xyzr0(nn,4); + if r_now < r_old + sphere = getSubBodyCoords(grains.shape,grains.axes,xyzr0(nn,4)+r,domain.dx); + r_old = r_now; + end + + % move the sphere to the current center point + spnew = sphere + [xyzr0(nn,1)*ones(length(sphere),1) ... + xyzr0(nn,2)*ones(length(sphere),1) .... + xyzr0(nn,3)*ones(length(sphere),1)]; + + [ix1,~] = find(spnew(:,1)size(Mv,1)-marg); + [ix2,~] = find(spnew(:,2)size(Mv,2)-marg); + [ix3,~] = find(spnew(:,3)size(Mv,3)-marg); + ix = unique([ix1;ix2;ix3]); + spnew(ix,:) = []; + + % get indices of the current sphere into M + index = sub2ind(size(M), spnew(:,1), spnew(:,2), spnew(:,3)); + % mark the "occupied" region + Mv(index) = true; + end + indexList_tmp = (1:numel(Mv))'; + indexList = indexList_tmp(~Mv(:)); + N = numel(indexList(:)); + + case 'hull_tight' + Mv = true(size(M)); + % now mark all inner voxels for searching a new center point + r2 = ceil(r/domain.dx); + ma = 2*marg-r2; + marg = ma; + + Mv(marg+1:end-marg,marg+1:end-marg,marg+1:end-marg) = false; + + Nxyz = find(xyzr0(:,4)<0,1,'first')-1; + if isempty(Nxyz) + error('There is no more free place left in voxel index list.\n'); + end + r_old = 1000; + + indexList = zeros(Nxyz,2); + for nn = 1:Nxyz + r_now = xyzr0(nn,4); + if r_now < r_old + sphereInner = getSubBodyCoords(grains.shape,grains.axes,xyzr0(nn,4),domain.dx); + sphereOuter = getSubBodyCoords(grains.shape,grains.axes,xyzr0(nn,4)+2*r,domain.dx); + r_old = r_now; + sphere = setdiff(sphereOuter,sphereInner,'rows'); + nVoxInHull = size(sphere,1); + end + + % move the sphere to the current center point + spnew = sphere + [xyzr0(nn,1)*ones(length(sphere),1) ... + xyzr0(nn,2)*ones(length(sphere),1) .... + xyzr0(nn,3)*ones(length(sphere),1)]; + + [ix1,~] = find(spnew(:,1)size(Mv,1)-marg); + [ix2,~] = find(spnew(:,2)size(Mv,2)-marg); + %[ix3,~] = find(spnew(:,3)size(Mv,3)-marg); + + % in z-dimension, accept positions in upper margin + % to create a surface pattern + [ix3,~] = find(spnew(:,3)>size(Mv,3)-marg); + ix = unique([ix1;ix2;ix3]); + spnew(ix,:) = []; + + % get indices of the current sphere into M + index = sub2ind(size(M), spnew(:,1), spnew(:,2), spnew(:,3)); + + % get voxels in surrounding hull + if ~grains.boolPreferClusters + % relate to free voxels + indexList(nn,:) = [nn sum(~M(index))/nVoxInHull]; + else + % relate to filled voxels + indexList(nn,:) = [nn sum(M(index))/nVoxInHull]; + end + end + indexList = indexList(~isnan(indexList(:,2)),:); + N = size(indexList,1); +end + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . \ No newline at end of file diff --git a/gprgravel_gui.png b/gprgravel_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..b6bf69f6e8dc13e6ed588c8262e7b04b4a9044c7 GIT binary patch literal 123649 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 z?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL# zBegy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{ zY+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1 zF4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2b zJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc z>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG z+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy6 z9xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjn zwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm= zU+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba z)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3 z?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL# zBegy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{ zY+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1 zF4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2b zJ?|ba)7xxc>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc z>?5^3?;bAG+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG z+iYL#Begy69xl_{Y+vjnwLR}1F4Nm=U+g2bJ?|ba)7xxc>?5^3?;bAG+iYL#Begy6 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 zbuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ z-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q< z)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8 z(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~Bv zBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+ z?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5x zF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fF zEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W z>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<* z)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup) z8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGo zbuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ z-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q< z)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8 z(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~Bv zBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+ z?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5x zF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fF zEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W z>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<* z)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup) z8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGo zbuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ z-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q< z)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8 z(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~Bv zBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+ z?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5x zF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fF zEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W z>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<* z)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup) z8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGo zbuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ z-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q< z)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8 z(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~Bv zBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+ z?cVGobuH5xF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5x zF4NTQ-s~fFEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fF zEz=q<)70(W>?3t8(;6<*)a~BvBXup)8ZOh+?cVGobuH5xF4NTQ-s~fFEz=q<)70(W z>?3t8^BT6Kx!b*_5AHhVHEc<9w|h+=+;z-r*plXM_nJPq>zLQDCC%OLHGOc`F|T1u zn!DX=`rxi(Uc;6&ce~g0!Cl9^hAnCCcCYD!yN-DcThiR^UegD69rGHtq`BL@rVs8q z<~3|dbGLg}>V_w6SGbu47)qmNa*}*Yv?%$GnCuY3_Ef>4UqD zc@10A-0fb|2X`Iw8n&dl+r6d_?mFf*Y)NysdrcqQbzLQDCC%OLHGOc`F|T1un!DX=`rxi( zUc;6&ce~g0!Cl9^hAnCCcCYD!yN-DcThiR^UegD69rGHtq`BL@rVs8q<~3|dbGLg< zAKZ1!YuJ+JZugo#xa*kLuqDmi?lpaI*D}>V_w6SGbu47)qmNa*}*Yv?%$GnCuY3_Ef>4UqDc@10A-0fb| z2X`Iw8n&dl+r6d_?mFf*Y)NysdrcqQbzLQDCC%OLHGOc`F|T1un!DX=`rxi(Uc;6&ce~g0 z!Cl9^hAnCCcCYD!yN-DcThiR^UegD69rGHtq`BL@rVs8q<~3|dbGLg}>V_w6SGbu47)qmNa*}*Yv?%$GnCuY3_Ef>4UqDc@10A-0fb|2X`Iw8n&dl z+r6d_?mFf*Y)NysdrcqQbzLQDCC%OLHGOc`F|T1W&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb z=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1 zGR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?w zF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZ zK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{ z?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS z;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@ z(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg z)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A z&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$ zZ{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`! zQqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb z=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1 zGR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?w zF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZ zK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{ z?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS z;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@ z(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg z)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A z&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$ zZ{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`! zQqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb z=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1 zGR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?w zF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZ zK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{ z?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS z;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@ z(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg z)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A z&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$ zZ{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`! zQqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb z=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1 zGR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?w zF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZ zK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{ z?dH`!QqwVS;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS z;WEwb=G8t@(=l)1GR^Jg)jm?wF>m2A&F$vZK2p;$Z{ae{?dH`!QqwVS;WEwb=G8t@ z(=l)1GR^Jg)jrby!`c`d0T9C=Z2zsl6x_Y-BIT*fLGO&G+Q96AN3W>9_fwKC)?;SlBX6zs>jbkxj$I z!j@_JZN8_EY#JsOwoKD+^F4iJ(=f5HWtx7Q@986(hKYqO)AZYXPaoMdOe}1frr+j! z`pBkXVqwcP{WjmzM>Y);3tOh?xA~qvvT2xD*fLGO&G+Q96AN3W>9_fwKC)?;SlBX6zs>jbkxj$I z!j@_JZN8_EY#JsOwoKD+^F4iJ(=f5HWtx7Q@986(hKYqO)AZYXPaoMdOe}1frr+j! z`pBkXVqwcP{WjmzM>Y);3tOh?xA~qvvT2xD*fLGO&G+Q96AN3W>9_fwKC)?;SlBX6zs>jbkxj$I z!j@_JZN8_EY#JsOwoKD+^F4iJ(=f5HWtx7Q@986(hKYqO)AZYXPaoMdOe}1frr+j! z`pBkXVqwcP{WjmzM>Y);3tOh?xA~qvvT2xD*fLGO&G+mTCU)HR&UJ{F#I;)BN9S(nt3AGYMO!`M=kskL>Yh61Gh9f3Ha&+2hY7 zY?t?JXA-td^M9{NAKBy2By5@H|6Y?mvd5oE*fP!k zy(WERk3W;JWt#tcP5Q_le zmTCU)HR&UJ{F#I;)BN9S(nt3AGYMO!`M=kskL>Yh61Gh9f3Ha&+2hY7Y?t?JXA-td^M9{NAKBy2By5@H|6Y?mvd5oE*fP!ky(WERk3W;J zWt#tcP5Q_lemTCU)HR&UJ z{F#I;)BN9S(nt3AGYMO!`M=kskL>Yh61Gh9f3Ha&+2hY7Y?t?JXA-td^M9{NAKBy2By5@H|6Y?mvd5oE*fP!ky(WERk3W;JWt#tcP5Q_l zemTCU)HR&UJ{F#I;)BN9S z(nt3AGYMO!`M=kskL>Yh61Gh9f3Ha&+2hY7Y?t?J zXA-td^M9{NAKBy2By5@H|6Y?mvd5oE*fP!ky(WERk3W;JWt#tcP5Q_lemTCU)HR&UJ{F#I;)BN9S(nt3AGYMO! z`M=kskL>Yh61Gh9f3Ha&+2hY7Y?t?JXA-td^M9{N zAKBy2By5@H|6Y?mvd5oE*fP!ky(WERk3W;JWt#tcP5Q_lemTCU)HR&UJ{F#I;)BN9S(nt3AGYMO!`M=kskL>Yh z61Gh9f3Ha&+2hY7Y?t?JXA-td^M9{NAKBy2By5@H z|6Y?mvd5oE*fP!ky(WERk3W;JWt#tcP5Q_lemTCU)HR&UJ{F#KU)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9 zS^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!& zn)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR z)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMK znS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~ zaasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fL zu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxU ztJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7 z{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n z_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m- zys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJC zgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9 zS^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!& zn)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR z)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMK znS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~ zaasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fL zu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxU ztJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7 z{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n z_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m- zys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJC zgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9 zS^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!& zn)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR z)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMK znS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~ zaasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fL zu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxU ztJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7 z{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n z_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m- zys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJC zgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9 zS^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!& zn)Y#7{F#HR)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR z)4Z^n_HkMKnS-m-ys(<~aasJCgR9fLu$uO9S^SxUtJA!&n)Y#7{F#HR)4Z^n_HkMK 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 zIrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh| zy7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6 z)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA% zje@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@l zaXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WE zak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ! ztJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7 z^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC z_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@Jw zwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvj zf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<# zIrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh| zy7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6 z)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA% zje@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@l zaXIvjf~(WEak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WE zak}<#IrNQ!tJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ! ztJAh|y7qB7^o@e6)3$NC_HjA%je@JwwsE@laXIvjf~(WEak}<#IrNQ!tJAh|y7qB7 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
&^7?9c zY&RKl-CQ4eeKkC`n+&;bu8+LF8XntChFmw-M_ykIkL@NyuAA#4udjy3c9S93&GnJj zSHokw$&l;j`pE06;j!Ih$aQmlTpxLTH9WSP47qNu zkG#Gb9@|ZZTsPN8USAE5?IuI6o9iR5uZG8VlOfm5^^w_0{m$ZZhP$xjypxYItln8FJlRA9;N>Jhqz*xo)nHyuKP9+f9aCH`hmAUk#7# zCPS{9>m#qPhR1f3A=l0Ik=IwlW4p
*o5%>#O0h-DJphbA9CX)$rJEGUU3sKJxl% zcx*Qra@|}Xd3`lJwwnyOZmy5Kz8W6eO@>@I*GFDo4Ug?6L#~_aBd@Q9$99t;*Uj~j z*H^=1yUCF2=K9F%tKqTTWXN@MedP7k@YrrL
&^7?9cY&RKl-CQ4eeKkC`n+&;b zu8+LF8XntChFmw-M_ykIkL@NyuAA#4udjy3c9S93&GnJjSHokw$&l;j`pE06;j!Ih z$aQmlTpxLTH9WSP47qNukG#Gb9@|ZZTsPN8USAE5 z?IuI6o9iR5uZG8VlOfm5^^w_0{m$ZZhP$xjypx zYItln8FJlRA9;N>Jhqz*xo)nHyuKP9+f9aCH`hmAUk#7#CPS{9>m#qPhR1f3A=l0I zk=IwlW4p
*o5%>#O0h-DJphbA9CX)$rJEGUU3sKJxl%cx*Qra@|}Xd3`lJwwnyO zZmy5Kz8W6eO@>@I*GFDo4Ug?6L#~_aBd@Q9$99t;*Uj~j*H^=1yUCF2=K9F%tKqTT zWXN@MedP7k@YrrL
&^7?9cY&RKl-CQ4eeKkC`n+&;bu8+LF8XntChFmw-M_ykI zkL@NyuAA#4udjy3c9S93&GnJjSHokw$&l;j`pE06;j!Ih$aQmlTpxLTH9WSP47qNukG#Gb9@|ZZTsPN8USAE5?IuI6o9iR5uZG8VlOfm5 z^^w_0{m$ZZhP$xjypxYItln8FJlRA9;N>Jhqz* zxo)nHyuKP9+f9aCH`hmAUk#7#CPS{9>m#qPhR1f3A=l0Ik=IwlW4p
*o5%>#O0h z-DJphbA9CX)$rJEGUU3sKJxl%cx*Qra@|}Xd3`lJwwnyOZmy5Kz8W6eO@>@I*GFDo z4Ug?6L#~_aBd@Q9$99t;*Uj~j*H^=1yUCF2=K9F%tKqTTWXN@MedP7k@YrrL
& z^7?9cY&RKl-CQ4eeKkC`n+&;bu8+LF8XntChFmw-M_ykIkL@NyuAA#4udjy3c9S93 z&GnJjSHokw$&l;j`pE06;j!Ih$aQmlTpxLTH9WSP z47qNukG#Gb9@|ZZTsPN8USAE5?IuI6o9iR5uZG8VlOfm5^^w_0{m$ZZhP$xjypxYItln8FJlRA9;N>Jhqz*xo)nHyuKP9+f9aCH`hmA zUk#7#CPS{9>m#qPhR1f3A=l0Ik=IwlW4p
*o5%>#O0h-DJphbA9CX)$rJEGUU3s zKJxl%cx*Qra@|}Xd3`lJwwnyOZmy5Kz8W6eO@>@I*GFDo4Ug?6L#~_aBd@Q9$99t; z*Uj~j*H^=1yUCF2=K9F%tKqTTWXN@MedP7k@YrrL
&^7?9cY&RKl-CQ4eeKkC` zn+&;bu8+LF8XntChFmw-M_ykIkL@NyuAA#4udjy3c9S93&GnJjSHokw$&l;j`pE06 z;j!Ih$aQmlTpxLTH9WSP47qNukG#Gb9@|ZZTsPN8 zUSAE5?IuI6o9iR5uZG8VlOfm5^^w_0{m$ZZhP$ zxjypxYItln8FJlRA9;N>Jhqz*xo)nHyuKP9+f9aCH`hmAUk#7#CPS{9>m#qPhR1f3 zA=l0Ik=IwlW4p
*o5%>#O0h-DJphbA9CX)$rJEGUU3sKJxl%cx*Qra@|}Xd3`lJ zwwnyOZmy5Kz8W6eO@>@I*GFDo4Ug?6L#~_aBd@Q9$99t;*Uj~j*H^=1yUCF2=K9F% ztKqTTWXN@MedP7k@YrrL
&^7?9cY&RKl-CQ4eeKkC`n+&;bu8+LF8XntChFmw- zM_ykIkL@NyuAA#4udjy3c9S93&GnJjSHokw$&l;j`pE06;j!Ih$aQmlTpxLTH9WSP47qNukG#Gb9@|ZZTsPN8USAE5?IuI6o9iR5uZG8V zlOfm5^^w_0{m$ZZhP$xjypxYItln8FJlRA9;N> zJhqz*xo)nHyuKP9+f9aCH`hmAUk#7#CPS{9>m#qPhR1f3A=l0Ik=IwlW4p
*o5% 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 zmiyq^;M(LUWxYOH zVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7q zT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5 z>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o z*6X7cmiyq^;M(LU zWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H- zC}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^ z;M(LUWxYOHVYv^k zO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{l zu1$_o*6X7cmiyq^ z;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx z`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7c zmiyq^;M(LUWxYOH zVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7q zT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5 z>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o z*6X7cmiyq^;M(LU zWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H- zC}q7qT4A{lu1$_o*6X7cmiyq^;M(LUWxYOHVYv^kO^#C5>!THx`{3H-C}q7qT4A{lu1$_o*6X7cmiyq^ z;M(LUWxYOHVYv^k zO^#C5>!THx{b2jaQp*1O$c1D-*nYB!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()M zd6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!B znkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9 zqj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2An zKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L z>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII? zzdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX z_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4 ze!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+() zMd6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+; zIex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vo zmgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OX zWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$C zO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL z+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@ zu1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j z;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l z2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ zec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L z*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1 zl6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7N zC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()M zd6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!B znkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9 zqj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2An zKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L z>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII? zzdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX z_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4 ze!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+() zMd6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+; zIex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vo zmgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OX zWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$C zO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL z+GII?zdo8L*$1vomgD#9qj{2j;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@ zu1%KX_v@p1l6~OXWI2AnKAI=l2d+()Md6IqL+GII?zdo8L*$1vomgD#9qj{2j z;M!z4e!o7NC)o$CO_t;L>!W#+ec;+;Iex!BnkU%@u1%KX_v@p1l6~OXWI2AnKAI=l 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 zW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{P zXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbp zjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r z)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr- zO^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU z+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmp zu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq z;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^) zEv`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS) z+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3* zv@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7 zM%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYW zVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~ z8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y( znqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i! zqZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0l zKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$= z>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~ zwLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?* zUhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?` z=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+C zW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{P zXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbp zjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r z)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr- zO^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU z+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmp zu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq z;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^) zEv`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS) z+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3* zv@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7 zM%&`r)M)0lKAK^)Ev`+CW?t)~8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYW zVYDr-O^s$=>!TS)+v3{PXy&y(nqjmpu1$?*UhAV7M%&`r)M)0lKAK^)Ev`+CW?t)~ z8AjXU+SF*~wLY3*v@Nbpjb>i!qZvlq;@Z?`=CwYWVYDr-O^s$=>!TS)+v3{PXy&y( znqjmpu1$?*UhAV7M%`ljsnX2v`^bh+x7dEFH1qpDvLVzhwx24^{JxKD2z86?r%E%w z?;{&R-D3Nx(#-Gs$c9k2*nX-s^ZP!sA=E9lpDNA#zK?7Ob&Kt%N;ALjBO5~9V*9Dm z%E2*@B7GxP`B8A zsxE2*@B7GxP`B8AsxE2*@B7GxP`B8AsxE2*@B7GxP`B8AsxE2*@B7GxP`B8AsxE2*@B7GxP`B8AsxE2*@B7GxP`B8AsxE2* z@B7GxP`B8AsxOkZ=F(5y<$3iM(7WhKJuT1YZqIl z>)IbKedIq2*Dkh9*R?-f`pAD4u3c=Iu4{j|^pXE8T)WsZUDy6_=_CJHxOTB+x~~1< z(ntQYaP4BtbY1(yrH}k);o8NP>ALoZOCR~q!nKPn({=3+mp<~Jg=-gErt8`tE`8)b z3)e2TOxLwPT>8j=7Oq`vnXYSpxb%_#EL^+TGF{jHaOoreS-5twWxB5Y;nGL`vvBQV z%XD4)!=;b>XW`n#mg&0ohf5#%&%(8fEz@=F50^gjpM`4|Tc+#UA1;05KMU6`woKQx zKV16Ae-^G?Y?-cWf4KCK|14a)*fL$${&49d|5>O!`Om_&i!IZ2?GKke@}Grk7h9(5+8-``a*Zy$nBmY^rcClr;uKnTCNB*;L?PAMxUHikOkNjuh+QpXX zy7q@lANkM1wTms&b?pzAKJuT1YZqIl>)IbKedIq2*Dkh9*R?-f`pAD4u3c=Iu4{j| z^pXE8T)WsZUDy6_=_CJHxOTB+x~~1<(ntQYaP4BtbY1(yrH}k);o8NP>ALoZOCR~q z!nKPn({=3+mp<~Jg=-gErt8`tE`8)b3)e2TOxLwPT>8j=7Oq`vnXYSpxb%_#EL^+T zGF{jHaOoreS-5twWxB5Y;nGL`vvBQV%XD4)!=;b>XW`n#mg&0ohf5#%&%(8fEz@=F z50^gjpM`4|Tc+#UA1;05KMU6`woKQxKV16Ae-^G?Y?-cWf4KCK|14a)*fL$${&49d z|5>O!`Om_&i!IZ2?GKke@}Grk z7h9(5+8-``a*Zy$nBmY^rcClr; zuKnTCNB*;L?PAMxUHikOkNjuh+QpXXy7q@lANkM1wTms&b?pzAKJuT1YZqIl>)IbK zedIq2*Dkh9*R?-f`pAD4u3c=Iu4{j|^pXE8T)WsZUDy6_=_CJHxOTC1y6$AL5+ z_Hp@zYZF(e>z?P@$K@BUOd!B0_mtVLxado=xd9Hn2e&O20)#u6v$qAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso}SEuWq=i0~R z7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BUOd!B0_mtVLx zado=xd9Hn2e&O20)#u6v$qAD3UaHgR>j?s=|# zTz=u&#MSA#=ehQA`Gso}SEuWq=i0~R7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@z zYZF(e>z?P@$K@BUOd!B0_mtVLxado=xd9Hn2e&O20)#u6v$qAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso}SEuWq=i0~R7p_fQ zovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BUOd!B0_mtVLxado=x zd9Hn2e&O20)#u6v$qAD3UaHgR>j?s=|#Tz=u& z#MSA#=ehQA`Gso}SEuWq=i0~R7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e z>z?P@$K@BUOd!B0_mtVLxado=xd9Hn2e&O20)#u6v$qAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso}SEuWq=i0~R7p_fQovwSH zYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BUOd!B0_mtVLxado=xd9Hn2 ze&O20)#u6v$qAD3UaHgR>j?s=|#Tz=u&#MSA# z=ehQA`Gso}SEuWq=i0~R7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@ z$K@BUOd!B0_mtVLxado=xd9Hn2e&O20)# zu6v$qAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso}SEuWq=i0~R7p_fQovwSHYaf?i zxHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BUOd!B0_mtVLxado=xd9Hn2e&O20 z)#u6v$qAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA z`Gso}SEuWq=i0~R7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BU zOd!B0_mtVLxado=xd9Hn2e&O20)#u6v$q zAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso}SEuWq=i0~R7p_fQovwSHYaf?ixHfTh zy6$AL5+_Hp@zYZF(e>z?P@$K@BUOd!B0_mtVLxado=xd9Hn2e&O20)#u6v$qAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso} zSEuWq=i0~R7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BUO zd!B0_mtVLxado=xd9Hn2e&O20)#u6v$qAD3Ua zHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso}SEuWq=i0~R7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BUOd!B0_mtVLxado=xd9Hn2e&O20)#u6v$qAD3UaHgR>j?s=|#Tz=u&#MSA#=ehQA`Gso}SEuWq z=i0~R7p_fQovwSHYaf?ixHfThy6$AL5+_Hp@zYZF(e>z?P@$K@BUOd!B0_ zmtVLyv1PjNc`|)u&)=KaGTrw)nLe`T?@er(?t7k0AKCNwCbmrXJx`{O?D=~WTc-P- zC(}pv{Jn`S(|ymA=_7mo-o%#azURsGkv)HJV#{>j^JMzSp1(J-WxDTqGJRyv-<#Mn z-S<41KCCL&d!9@m+4J`%woLauPo|IT`Fj&vru&{J(?|CFy@@T;eb1BWBYXbd z#Fpv4=gIVuJ%4Xv%XHuKWctXSzc;aEy6<^1ePqwyo7ghl_dJx2 z`pBNYH?d{9?|CwPWY6E5*fQPsJefYS=kHByneKa@Odr|v_a?SX_dQRhkL>w-6I-VH zo+r~s_WZqxEz^C^lj$RS{@%ov>AvU5^pQP(Z(_@I-}7Yp$ezD9v1PjNc`|)u&)=Ka zGTrw)nLe`T?@er(?t7k0AKCNwCbmrXJx`{O?D=~WTc-P-C(}pv{Jn`S(|ymA=_7mo z-o%#azURsGkv)HJV#{>j^JMzSp1(J-WxDTqGJRyv-<#Mn-S<41KCCL&d!9@m z+4J`%woLauPo|IT`Fj&vru&{J(?|CFy@@T;eb1BWBYXbd#Fpv4=gIVuJ%4Xv%XHuK zWctXSzc;aEy6<^1ePqwyo7ghl_dJx2`pBNYH?d{9?|CwPWY6E5 z*fQPsJefYS=kHByneKa@Odr|v_a?SX_dQRhkL>w-6I-VHo+r~s_WZqxEz^C^lj$RS z{@%ov>AvU5^pQP(Z(_@I-}7Yp$ezD9v1PjNc`|)u&)=KaGTrw)nLe`T?@er(?t7k0 zAKCNwCbmrXJx`{O?D=~WTc-P-C(}pv{Jn`S(|ymA=_7mo-o%#azURsGkv)HJV#{>j z^JMzSp1(J-WxDTqGJRyv-<#Mn-S<41KCCL&d!9@m+4J`%woLauPo|IT`Fj&v zru&{J(?|CFy@@T;eb1BWBYXbd#Fpv4=gIVuJ%4Xv%XHuKWctXSzc;aEy6<^1ePqwy zo7ghl_dJx2`pBNYH?d{9?|CwPWY6E5*fQPsJefYS=kHByneKa@ zOdr|v_a?SX_dQRhkL>w-6I-VHo+r~s_WZqxEz^C^lj$RS{@%ov>AvU5^pQP(Z(_@I z-}7Yp$ezD9v1PjNc`|)u&)=KaGTrw)nLe`T?@er(?t7k0AKCNwCbmrXJx`{O?D=~W zTc-P-C(}pv{Jn`S(|ymA=_7mo-o%#azURsGkv)HJV#{>j^JMzSp1(J-WxDTqGJRyv z-<#Mn-S<41KCCL&d!9@m+4J`%woLauPo|IT`Fj&vru&{J(?|CFy@@T;eb1BW zBYXbd#Fpv4=gIVuJ%4Xv%XHuKWctXSzc;aEy6<^1ePqwyo7ghl_dJx2`pBNYH?d{9?|CwPWY6E5*fQPsJefYS=kHByneKa@Odr|v_a?SX_dQRhkL>w- z6I-VHo+r~s_WZqxEz^C^lj$RS{@%ov>AvU5^pQP(Z(_@I-}7Yp$ezD9v1PjNc`|)u z&)=KaGTrw)nLe`T?@er(?t7k0AKCNwCbmrXJx`{O?D=~WTc-P-C(}pv{Jn`S(|ymA z=_7mo-o%#azURsGkv)HJV#{>j^JMzSp1(J-WxDTqGJRyv-<#Mn-S<41KCCL& zd!9@m+4J`%woLauPo|IT`Fj&vru&{J(?|CFy@@T;eb1BWBYXbd#Fpv4=gIVuJ%4Xv z%XHuKWctXSzc;aEy6<^1ePqwyo7ghl_dJx2`pBNYH?d{9?|CwP zWY6E5*fQPsJefYS=kHByneKa@Odr|v_a?SX_dQRhkL>w-6I-VHo+r~s_WZqxEz^C^ zlj$RS{@%ov>AvU5^pQP(Z(_@I-}7Yp$ezD9v1PjNc`|)u&)=KaGTrw)nLe`T?@er( z?t7k0AKCNwCbmrXJx`{O?D=~WTc-P-C(}pv{Jn`S(|ymA=_7mo-o%#azURsGkv)HJ zV#{>j^JMzSp1(J-WxDTqGJRyv-<#Mn-S<41KCCL&d!9@m+4J`%woLauPo|IT z`Fj&vru&{J(?|CFy@@T;eb1BWBYXbd#Fpv4=gIVuJ%4Xv%XHuKWctXSzc;aEy6<^1 zePqwyo7ghl_dJx2`pBNYH?d{9?|CwPWY6E5*fQPsJefYS=kHBy zneKa@Odr|v_a?SX_dQRhkL>w-6I-VHo+r~s_WZqxEz^C^lj$RS{@%ov>AvU5^pQP( zZ(_@I-}7Yp$ezD9v1PjNc`|)u&)=KaGTrw)nLe`T?@er(?t7k0AKCNwCbmrXJx`{O z?D=~WTc-P-C(}pv{Jn`S(|ymA=_7mo-o%#azURsGkv)HJV#{>j^JMzSp1(J-b-FKF zvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx; zx-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m z_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvF zT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#b zTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFK zb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~Z zzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL? zeO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N( zFIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0 zaCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#my zmcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKF zvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx; zx-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m z_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvF zT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#b zTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFK zb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~Z zzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL? zeO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N( zFIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0 zaCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#my zmcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKF zvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx; zx-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m z_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvF zT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#b zTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFK zb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~Z zzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL? zeO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N( zFIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0 zaCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#my zmcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKF zvVB~ZzxQx;x-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx; zx-VL?eO#8m_i%N(FIuvFT$aE0aCN#bTC#mymcRFKb-FKFvVB~ZzxQx;x-VL?eO#8m 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 z+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS z^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS z+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy z7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}Z zQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1 z+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS z^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS z+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy z7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}Z zQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1 z+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS z^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS z+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy z7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}Z zQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1 z+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS z^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS z+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy z7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}Z zQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1 z+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS z^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS z+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy z7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}Z zQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1 z+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS z^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS z+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy z7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}Z zQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1 z+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS^}*Yy7~4{1+uilS+o%}ZQf1rS z^}*Yy7~4{1+uilS+o%|usq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{ zk!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVn zs(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR z(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!j zB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;?E>q=W z*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RFABjdq zxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI( zRX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LE zXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%| zeC*msqEQhpQ{`jVJ`#M z5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#Olx zYafY5MYv3rk6rsnG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#) zT&Bv$u6-mL72z^fK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jV zJ`#M5iV2ZW7j?sjf!xY zDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsn zG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^f zK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q; zwU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;? zE>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RF zABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a z)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ` zW&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+ zAL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkx zcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$ z#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{ zTegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf z(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)B zd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1 zURF(W& z%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$) zI^!+dN4k6W;xcu{TegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GO zyk+}Hckf(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3K zBi+4wahW>fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9 zyLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8T zxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf; zsWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)= z%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHt zKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X z?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+AL;Jh zi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkxcP}ne zXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$#bxS@ zw`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM z_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rik zm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vip zb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf z**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+d zN4k6W;xcu{TegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}H zckf(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4w zahW>fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@x zQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e# zmhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZP zeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47( z-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO0 z7ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{ z&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+AL;Jhi_6p* zZ`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkxcP}neXS`+m zNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej z?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1UR558;pVp}SWx4l02uH}nusWjg9`rx~kFSe!9c-!lP?^?dt zmP+GouMfU!`C?ltjkmo%_^#!PZK*Wg_WIzvmM^xY(sx1uFzSx#Z<87}GzH9knTPlsWy*~J^<%?~p zG~V|5;JcPDwx!Z|+v|hxTE5tpO5<&>558;pVp}SWx4l02uH}nusWjg9`rx~kFSe!9 zc-!lP?^?dtmP+GouMfU!`C?ltjkmo%_^#!PZK*Wg_WIzvmM^xY(sx1uFzSx#Z<87}GzH9knTPlsW zy*~J^<%?~pG~V|5;JcPDwx!Z|+v|hxTE5tpO5<&>558;pVp}SWx4l02uH}nusWjg9 z`rx~kFSe!9c-!lP?^?dtmP+GouMfU!`C?ltjkmo%_^#!PZK*Wg_WIzvmM^xY(sx1uFzSx#Z<87}G zzH9knTPlsWy*~J^<%?~pG~V|5;JcPDwx!Z|+v|hxTE5tpO5<&>558;pVp}SWx4l02 zuH}nusWjg9`rx~kFSe!9c-!lP?^?dtmP+GouMfU!`C?ltjkmo%_^#!PZK*Wg_WIzv zmM^xY(sx1uF zzSx#Z<87}GzH9knTPlsWy*~J^<%?~pG~V|5;JcPDwx!Z|+v|hxTE5tpO5<&>558;p zVp}SWx4l02uH}nusWjg9`rx~kFSe!9c-!lP?^?dtmP+GouMfU!`C?ltjkmo%_^#!P zZK*Wg_WIzvmM^xY(sx1uFzSvBq^WV0Q^vuN%@V}Whz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;gWhz|Ww2$Ogk#Ly`mpAPrxm6@wro!b- z`$%pT374sGdDA|UTSdZUDqP;QkK|U7aG461H|-<2RU}-d!sSi-NNyDgm#J`h(>{`0 zMZ#q&T;8;g`s%gEj2E$ zt`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8QseUK`e1jOgl(yDd3AlT zJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1x<1&QCShA@TwYxt>`s%g zEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8QseUK`e1jOgl(yD zd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1x<1&QCShA@TwYxt z>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8QseUK`e1jO zgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1x<1&QCShA@ zTwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8QseUK z`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1x<1&Q zCShA@TwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8 zQseUK`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1 zx<1&QCShA@TwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U z?lcM8QseUK`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{ zw$!-1x<1&QCShA@TwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr z<<<4U?lcM8QseUK`e1jOgl(yDd3AlTJ59o7YHYh|A89)c<1#h2UA2$2orZCl8r!bg zN7_!qxJ-?0SM4Khr(s;C#mOMRr^TWX&9HOvF)mTr0q0}%hcF*)jra8 z8pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l`OpR?psC*ml)E z(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<>!?;Y1ZCC9hZKq*erpC6b_K~*J zFfLPL+g1BW+i4h=sj=;mOMRr^TWX&9HOvF)mTr0q0}%hcF* z)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l`OpR?psC z*ml)E(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<>!?;Y1ZCC9hZKq*erpC6b z_K~*JFfLPL+g1BW+i4h=sj=;mOMRr^TWX&9HOvF)mTr0q0} z%hcF*)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l`OpR?psC*ml)E(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<>!?;Y1ZCC9hZKq*e zrpC6b_K~*JFfLPL+g1BW+i4h=sj=;mOMRr^TWX&9HOvF)mT zr0q0}%hcF*)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l`OpR?psC*ml)E(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<>!?;Y1ZCC9h zZKq*erpC6b_K~*JFfLPL+g1BW+i4h=sj=;mOMRr^TWX&9HO zvF)mTr0q0}%hcF*)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l`OpR?< z?IUfcVO*xhwyXA$w$m^!Q)Amz`$*eq7?-KB?W%pG?KF(b)Yx{_KGJp?#${@3yJ{b4 zI}PJ9HMU)~kF=eJahV$1uG&Z1PQ$oNjcr%$BWpsC*ml)E(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<>!?;Y1 zZCC9hZKq*erpC6b_K~*JFfLPL+g1BW+i4h=sj=;mOMRr^TW zX&9HOvF)mTr0q0}%hcF*)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l` zOpR?psC*ml)E(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<> z!?;Y1ZCC9hZKq*erpC6b_K~*JFfLPL+g1BW+i4h=sj=;mOM zRr^TWX&9HOvF)mTr0q0}%hcF*)jra8D#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n* z@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|S zD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&O zwp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{ z*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6 zcYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n* z@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|S zD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&O zwp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{ z*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6 zcYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n* z@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|S zD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&O zwp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{ z*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6 zcYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n* z@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|S zD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&O zwp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#o@{ z*>-n*@HQ&Owp7`6cYW|SD#o@{*>-n*@HQ&Owp7`6cYW|SD#m82eC*msqEQhpQ{`jV zJ`#M5iV2ZW7j?sjf!xY zDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsn zG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^f zK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q; zwU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;? zE>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RF zABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O z8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;?E>q=W*FF-Big1}K zAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RFABjdqxJ;FgUHeEh zD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb` zm#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGo zk3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhp zQ{`jVJ`#M5iV2ZW7j?s zjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3r zk6rsnG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL z72z^fK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze z%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF) zN1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQ zsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1* z$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;?E>q=W*FF-B zig1}KAG`LEXjFvDRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RFABjdqxJ;Fg zUHeEhD#B%|eC*msqEQhpQ{`jVJ`#M5iV2ZW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@ zBhjb`m#OlxYafY5MYv3rk6rsnG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvD zRQcGok3^#)T&Bv$u6-mL72z^fK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*ms zqEQhpQ{`jVJ`#M5iV2Z zW7j?sjf!xYDj&P{k!Vze%T)Q;wU0!jB3!1*$F6-O8WrI(RX%p@Bhjb`m#OlxYafY5 zMYv3rk6rsnG%CVns(kF)N1{;?E>q=W*FF-Big1}KAG`LEXjFvDRQcGok3^#)T&Bv$ zu6-mL72z^fK6dRR(WnTQsq(RFABjdqxJ;FgUHeEhD#B%|eC*msqEQhpQ{`jVJ`#fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej z?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I z>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(} zvVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^ zk97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W z;xcu{TegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>f zE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o z`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_m zy?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0 zFD_GOyk+}Hckf(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a? zo$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s z-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlA zk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5 z-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkxcP}neXS`+mNO$jE zT&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$#bxS@w`?Ej?%j*a z)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ` zW&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{TegpM_wL1I>WsH+ zAL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf(%rikm#H(}vVEkx zcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)Bd-vipb;et^k97C$ z#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%{1URF(W&%hVZf**?mZ`W&22X?_OM{&UnlAk?!8TxJ;e#mhB_my?b$)I^!+dN4k6W;xcu{ zTegpM_wL1I>WsH+AL;Jhi_6p*Z`nT5-Mbf;sWaZPeWbg0FD_GOyk+}Hckf z(%rikm#H(}vVEkxcP}neXS`+mNO$jET&B)=%l47(-o3a?o$;3KBi+4wahW>fE!#)B zd-vipb;et^k97C$#bxS@w`?Ej?%j*a)ERHtKGNO07ni9s-m-n9yLT@xQ)j$o`$%^$ zUu;XI@wV3o-?ezv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0BH=O>E^pdLa;r$V zOohvv_L1Bw5-wBW@}_+xw~Bq$1 zrhO#0iiFElxV&i}$*m&cG8Haw+DCG$NVrUe%bWI*+$s_-Q{nQaeI&Pvgv(U8ylEfF zts>zv6)tbuM{=u3xJ-r1oA#01DiSVJ;qs<^B)5u$%T&0$X&=e0CShA@TwYxt>`s%g zEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8QseUK`e1jOgl(yD zd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1x<1&QCShA@TwYxt z>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8QseUK`e1jO zgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1x<1&QCShA@ zTwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8QseUK z`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1x<1&Q zCShA@TwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U?lcM8 zQseUK`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{w$!-1 zx<1&QCShA@TwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr<<<4U z?lcM8QseUK`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N4|biS@JnuKksad~xpuscn{ zw$!-1x<1&QCShA@TwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C61Jtr z<<<4U?lcM8QseUK`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVOwfkUR@vTPLr@LH7>8N z4|biS@JnuKksad~xp zuscn{w$!-1x<1&QCShA@TwYxt>`s%gEj2E$t`BynN!XSemsi&ZyVE3WOO4B`>x12C z61Jtr<<<4U?lcM8QseUK`e1jOgl(yDd3AlTJ59p2)VRF5KG>ZmVKX(hUA2$2orZCl z8r!bgN7_!qxJ-?0SM4Khr(s;C#mOMRr^TWX&9HOvF)mTr0q0}%hcF* z)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l`OpR?psC z*ml)E(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<>!?;Y1ZCC9hZKq*erpC6b z_K~*JFfLPL+g1BW+i4h=sj=;mOMRr^TWX&9HOvF)mTr0q0} z%hcF*)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2+D^l`OpR?psC*ml)E(smlgWom4@Y9DDk4dXI3wq3Q4w4H`=nHt-!+DF<>!?;Y1ZCC9hZKq*e zrpC6b_K~*JFfLPL+g1BW+i4h=sj=;mOMRr^TWX&9HOvF)mT zr0q0}%hcF*)jra88pdU6Y`bb7X*&($GBvhcwU4x&hH;r1+pgM2`r4;s+(?2L2!gu* ze_Do&DEgB)r@bVaU;vBR-D#S2tI_uA^-R0dH0xHQ?bYjh(;!(=_W=qwUq}nRcgX)~!a{tJgE_PSdPgjkZ^>XWE^nS+^Q(uU^lzJ5950HQHXi zo@sZQX5DJEy?Q;zQ_^Y1XYq+pE_z z?M~CITaC6?uV>nwrdhWdZLeO>v^!0+ZZ+Coy`E`znr7WsF)f)$5sdr)k!$M%$~`Gwn{(tXqw?SFdNh(;!(=_W=qwUq}nRcgX)~!a{tJgE_PSdPgjkZ^>XWE^nS+^Q( zuU^lzJ5950HQHXio@sZQX5DJEy?Q;zQ_^Y1XYq+pE_z?M~CITaC6?uV>nwrdhWdZLeO>v^!0+ZZ+Coy`E`znr7WsF)f)$5sdr)k!$M%$~`Gwn{(tXqw?SFdN< zou*m08f~v$&$K&Dvu-uoUcH`acbaD1YP7w2J=5+q&AQcSd-Zyz-D#S2tI_uA^-R0d zH0xHQ?bYjh(;!(=_W=qwUq}nRcgX)~!a{tJgE_PSdPg zjkZ^>XWE^nS+^Q(uU^lzJ5950HQHXio@sZQX5DJEy?Q;zQ_^Y1XYq+pE_z?M~CITaC6?uV>nwrdhWdZLeO>v^!0+ZZ+Co zy`E`znr7WsF)f)$5sdr)k!$M%$~` zGwn{(tXqw?SFdNh(;!(=_W=qwUq}nRcgX z)~!a{tJgE_PSdPgjkZ^>XWE^nS+^Q(uU^lzJ5950HQHXio@sZQX5DJEy?Q;zQ_^Y1XYq+pE_z?M~CITaC6?uV>nwrdhWd zZLeO>v^!0+ZZ+Coy`E`znr7WsF)f z)$5sdr)k!$M%$~`Gwn{(tXqw?SFdN|pyX)!QsG7D_X?u4)y&F~2wkmD!uBUgSYT8z%?cMeCZd6U%s)O-Kd(jRcU*7J-r)M)3z#Y z@2;nJqiWh#rS0AI^lns5+p4s^yPn>Ss%cx5ws+UlyHPc5tJ3!FdU`jirfpT)-d#`c zM%A>fO53~Z>D{QBwpD3+cRjruRnxXAZSSt9ccW_BR;BIT_4IC3P1~xpy}O>?jjCx| zm9}@+)4NeMZL8Au?s|GRs-|sK+TLAH??%*?L7nzmJGdv`s(8&%V`DsAts zr+1@j+E%6Q-SzZtR88Bew7t8Y-i@khTa~tV*VDUEHEpZX_U?LmH>##>RodQNPwz(6 zw5>|pyX)!QsG7D_X?u4)y&F~2wkmD!uBUgSYT8z%?cMeCZd6U%s)O-Kd(jRcU*7J-r)M)3z#Y@2;nJ zqiWh#rS0AI^lns5+p4s^yPn>Ss%cx5ws+UlyHPc5tJ3!FdU`jirfpT)-d#`cM%A>f zO53~Z>D{QBwpD3+cRjruRnxXAZSSt9ccW_BR;BIT_4IC3P1~xpy}O>?jjCx|m9}@+ z)4NeMZL8Au?s|GRs-|sK+TLAH??%*?L7nzmJGdv`s(8&%V`DsAtsr+1@j z+E%6Q-SzZtR88Bew7t8Y-i@khTa~tV*VDUEHEpZX_U?LmH>##>RodQNPwz(6w5>|p zyX)!QsG7D_X?u4)y&F~2wkmD!uBUgSYT8z%?cMeCZd6U%s)O-Kd(jRcU*7J-r)M)3z#Y@2;nJqiWh# zrS0AI^lns5+p4s^yPn>Ss%cx5ws+UlyHPc5tJ3!FdU`jirfpT)-d#`cM%A>fO53~Z z>D{QBwpD3+cRjruRnxXAZSSt9ccW_BR;BIT_4IC3P1~xpy}O>?jjCx|m9}@+)4NeM zZL8Au?s|GRs-|sK+TLAH??%*?L7nzmJGdv`s(8&%V`DsAtsr+1@j+E%6Q z-SzZtR88Bew7t8Y-i@khTa~tV*VDUEHEpZX_U?LmH>##>RodQNPwz(6w5>|pyX)!Q zsG7D_X?u4)y&F~2wkmD!uBUgSYTB*JbN6~C8&$DxRi3-oGufz$b*u8+y`ITNRjgZ; z=kE1PHmYLXsyuhEXR=Wh>sIBtdp(nls#v!w&)w^pY*fX%ReA1S&t#)2)~(8O_j)E9 zRk3bWp1apG*{F(jtMc5vp2SJ(G>9Shp(A z-RqfbRK>bgdG21%WTPt9t;%!vdL|oHv2InKyVo<>sET!~^4z_i$wpPITb1YT^-MOZ zV%@4dcduu%Q5EY}<+*!3lZ~oaw<^!w>zQm+#ky5_?q1Jiqbk;|%5(R6CL2|;ZdIPU z*E89uigl~<+`XR3Mpdj^mFMpDOg5@w-KsoyuV=DR73)^zxqCg6jjC9;D$m{PnQTb4ZUe9EsD%P#abN6~C8&$DxRi3-oGufz$b*u8+y`ITNRjgZ;=kE1PHmYLXsyuhE zXR=Wh>sIBtdp(nls#v!w&)w^pY*fX%ReA1S&t#)2)~(8O_j)E9Rk3bWp1apG*{F(j ztMc5vp2SJ(G>9Shp(A-RqfbRK>bgdG21% zWTPt9t;%!vdL|oHv2InKyVo<>sET!~^4z_i$wpPITb1YT^-MOZV%@4dcduu%Q5EY} z<+*!3lZ~oaw<^!w>zQm+#ky5_?q1Jiqbk;|%5(R6CL2|;ZdIPU*E89uigl~<+`XR3 zMpdj^mFMpDOg5@w-KsoyuV=DR73)^zxqCg6jjC9;D$m{PnQTb4ZUe9EsD%P#a zbN6~C8&$DxRi3-oGufz$b*u8+y`ITNRjgZ;=kE1PHmYLXsyuhEXR=Wh>sIBtdp(nl zs#v!w&)w^pY*fX%ReA1S&t#)2)~(8O_j)E9Rk3bWp1apG*{F(jtMc5vp2SJ(G>9Shp(A-RqfbRK>bgdG21%WTPt9t;%!vdL|oH zv2InKyVo<>sET!~^4z_i$wpPITb1YT^-MOZV%@4dcduu%Q5EY}<+*!3lZ~oaw<^!w z>zQm+#ky5_?q1Jiqbk;|%5(R6CL2|;ZdIPU*E89uigl~<+`XR3Mpdj^mFMpDOg5@w z-KsoyuV=DR73)^zxqCg6jjC9;D$m{PnQTb4ZUe9EsD%P#abN6~C8&$DxRi3-o zGufz$b*u8+y`ITNRjgZ;=kE1PHmYLXsyuhEXR=Wh>sIBtdp(nls#v!w&)w^pY*fX% zReA1S&t#)2)~(8O_j)E9Rk3bWp1apG*{F(jtMc5vp2SJ(G>9Shp(A-RqfbRK>bgdG21%WTPt9t;%!vdL|oHv2InKyVo<>sET!~ z^4z_i$wpPITb1YT^-MOZV%@4dcduu%Q5EY}<+*!3lZ~oaw<^!w>zQm+#ky5_?q1Ji zqbk;|%5(R6CL2|;ZdIPU*E89uigl~<+`XR3Mpdj^mFMpDOg5@w-KsoyuV=DR73)^z zxqCg6jjC9;D$m{PnQTb4ZUe9EsD%P#abN6~C8&$DxRi3-oGufz$b*u8+y`ITN zRjgZ;=kE1PHmYLXsyuhEXR=Wh>sIBtdp(nls#v!w&)w^pY*fX%ReA1S&t#)2)~(8O z_j)E9Rk3bWp1apG*{F(jtMc5vp2SJ(G>9 zShp(A-RqfbRK>bgdG21%WTPt9t;%!vdL|oHv2InKyVo<>sET!~^4z_i$wpPITb1YT z^-MOZV%@4dcduu%Q5EY}<+*!3lZ~oaw<^!w>zQm+#ky5_?q1Jiqbk;|%5(R6CL2|; zZdIPU*E89uigl~<+`XR3Mpdj^mFMpDOg5@w-KsoyuV=DR73)^zxqCg6jjC9;D$m{P znQTb4ZUe9EsD%P#abN6~C8&$DxRi3-oGufz$b*u8+y`ITNRjgZ;=kE1PHmYLX zsyuhEXR=Wh>sIBtdp(nls#v!w&)w^pY*fX%ReA1S&t#)2)~(8O_j)E9Rk3bWp1apG z*{F(jtMc5vp2SJ(G>9Shp(A-RqfbRK>bg zdG21%WTPt9t;%!vdL|oHv2InKyVo<>sET!~^4z_i$wpPITb1YT^-MOZV%@4dcduu% zQ5EY}<+*!3lZ~oaw<^!w>zQm+#ky5_?q1Jiqbk;|%5(R6CL2|;ZdIPU*E89uigl~< z+`XR3Mpdj^mFMpDOg5@w-KsoyuV=DR73)^zxqCg6jjC9;D$m{PnQTb4ZUe9Es zD%P#abN6~C8&$DxRi3-oGufz$b*u8+y`ITNRjgZ;=kE1PHmYLXsyuhEXR=Wh>sIBt zdp(nls#v!w&)w^pY*fX%ReA1S&t#)2)~(8O_j)E9Rk3bWp1apG*{F(jtMc5vp2SJ(G>9Shp(A-RqfbRK>bgdG21%WTPt9t;%!v zdL|oHv2InKyVo<>sET!~^4z_i$wpPITb1YT^-MOZV%@4dcduu%Q5EY}<+*!3lZ~oa zw<^!w>zQm+#ky5_?q1Jiqbk;|%5(R6CL2|;ZdIPU*E89uigl~<+`XR3Mpdj^mFMpD zOg5@w-KsoyuV=DR73)^zxqCg6jjC9;D$m{PnQTb4ZUe9EsD%P#abN6~C8&$Dx zRi3-oGufz$b*u8+y`ITNRjgZ;=kE1PHmYLXsyuhEXR=Wh>sIBtdp(nls#v!w&)w^p zY*fX%ReA1S&t#)2)~(8O_j)E9Rk3bWp1apG*{F(jtMc5vp2SJ(G>9Shp(A-RqfbRK>bgdG21%WTPt9t;%!vdL|oHv2InKyVo<> zsET!~^4z_i$wpPITb1YT^-MOZV%@4dcduu%Q5EY}<+*!3lZ~oaw<^!w>zQm+#ky5_ z?q1Jiqbk;|%5(R6CL2|;ZdIPU*E89uigl~<+`XR3Mpdj^mFMpDOg5@w-KsoyuV=DR z73)^zxqCg6jjC9;D$m{PnQTb4ZUe9EsD%P#abN6~C8&$DxRi3-oGufz$b*u8+ zy`ITNRjgZ;=kE1PHmYLXsyuhEXR=Wh>sIBtdp(nls#v!w&)w^pY*fX%ReA1S&t#)2 z)~(8O_j)E9Rk3bWp1apG*{F(jtMc5vp2S zJ(G>9Shp(A-RqfbRK>bgdG21%WTPt9t;%!vdL|oHv2InKyVo<>sET!~^4z_i$wpPI zTb1YT^-MOZV%@4dcduu%Q5EY}<+*!3lZ~oaw<^!w>zQm+#ky5_?q1Jiqbk;|%5(R6 zCL2|;ZdIPU*E89uigl~<+`XR3Mpdj^mFMpDOg5@w-KsoyuV=DR73)^zxqCg6jjC9; zD$m{PnQTb4ZUe9EsD%P#abN6~C8&$DxRi3-oGufz$b*u8+y`ITNRjgZ;=kE1P zHmYLXsyuhEXR=Wh>sIBtdp(nls#v!w&)w^pY*fX%ReA1S&t#)2)~(8O_j)E9Rk3bW zp1apG*{F(jtMc5vp2Y2YTwYIm?~1n7c`mP~ zy>~_1>O7a%)84zHZFQc@>uK*@(Y89z<@L1pu4r4G=kj{mdsnor&U1M^?Y%47R_D3A zp7!1qZL9NKUQc`Pini5xF0ZG(cSYOkJeSwg-n*i0b)L)XY42UpwmQ${^|be{Xj`4< z@_O2PSG29pb9p`Oy(`*Q=efL|_TCk3tMgo5PkZl*w$*tqucy6tMce8;m)FzYyP|D% zp3CcL?_JThI?v_xwD+!PTb<|fdfIzew5`r_c|GmDE814)xxAkC-W6@D^ITp}d+&<2 z)p;(jr@ePY+v+@**VEp+qHT4a%j;?HUD38W&*k;B_pWGLo#*m;+Iv^DtY2YTwYIm?~1n7c`mP~y>~_1>O7a%)84zHZFQc@>uK*@(Y89z<@L1p zu4r4G=kj{mdsnor&U1M^?Y%47R_D3Ap7!1qZL9NKUQc`Pini5xF0ZG(cSYOkJeSwg z-n*i0b)L)XY42UpwmQ${^|be{Xj`4<@_O2PSG29pb9p`Oy(`*Q=efL|_TCk3tMgo5 zPkZl*w$*tqucy6tMce8;m)FzYyP|D%p3CcL?_JThI?v_xwD+!PTb<|fdfIzew5`r_ zc|GmDE814)xxAkC-W6@D^ITp}d+&<2)p;(jr@ePY+v+@**VEp+qHT4a%j;?HUD38W z&*k;B_pWGLo#*m;+Iv^DtY2YTwYIm?~1n7c`mP~y>~_1 z>O7a%)84zHZFQc@>uK*@(Y89z<@L1pu4r4G=kj{mdsnor&U1M^?Y%47R_D3Ap7!1q zZL9NKUQc`Pini5xF0ZG(cSYOkJeSwg-n*i0b)L)XY42UpwmQ${^|be{Xj`4<@_O2P zSG29pb9p`Oy(`*Q=efL|_TCk3tMgo5PkZl*w$*tqucy6tMce8;m)FzYyP|D%p3CcL z?_JThI?v_xwD+!PTb<|fdfIzew5`r_c|GmDE814)xxAkC-W6@D^ITp}d+&<2)p;(j zr@ePY+v+@**VEp+qHT4a%j;?HUD38W&*k;B_pWGLo#*m;+Iv^DtY2YTwYIm?~1n7c`mP~y>~_1>O7a%)84zHZFQc@>uK*@(Y89z<@L1pu4r4G z=kj{mdsnor&U1M^?Y%47R_D3Ap7!1qZL9NKUQc`Pini5xF0ZG(cSYOkJeSwg-n*i0 zb)L)XY42UpwmQ${^|be{Xj`4<@_O2PSG29pb9p`Oy(`*Q=efL|_TCk3tMgo5PkZl* zw$*tqucy6tMce8;m)FzYyP|D%p3CcL?_JThI?v_xwD+!PTb<|fdfIzew5`r_c|GmD zE814)xxAkC-W6@D^ITp}d+&<2)p;(jr@ePY+v+@**VEp+qHT4a%j;?HUD38W&*k;B z_pWGLo#*m;+Iv^DtY2YTwYIm?~1n7c`mP~y>~_1>O7a% z)84zHZFQc@>uK*@(Y89z<@L1pu4r4G=kj{mdsnor&U1M^?Y%47R_D3Ap7!1qZL9NK zUQc`Pini5xF0ZG(cSYOkJeSwg-n*i0b)L)XY42UpwmQ${^|be{Xj`4<@_O2PSG29p zb9p`Oy(`*Q=efL|_TCk3tMgo5PkZl*w$*tqucy6tMce8;m)FzYyP|D%p3CcL?_JTh zI?v_xwD+!PTb<|fdfIzew5`r_c|GmDE814)xxAkC-W6@D^ITp}d+&<2)p;(jr@ePY z+v+@**VEp+qHT4a%j;?HUD38W&*k;B_pWGLo#*m;+Iv^DtY2YTwYIm?~1n7c`mP~y>~_1>O7a%)84zHZFQc@>uK*@(Y89z<@L1pu4r4G=kj{m zdsnor&U1M^?Y%47R_D3Ap7!1qZL9NKUQc`Pini5xF0ZG(cSYOkJeSwg-n*i0b)L)X zY42UpwmQ${^|be{Xj`4<@_O2PSG29pb9p`Oy(`*Q=efL|_TCk3tMgo5PkZl*w$*tq zucy6tMce8;m)FzYyP|D%p3CcL?_JThI?v_xwD+!PTb<|fdfIzew5`r_c|GmDE814) zxxAkC-W6@D^ITp}d+&<2)p;(jr@ePY+v+@**VEp+qHT4a%j;?HUD38W&*k;B_pWGL zo#*m;+Iv^DtY2YTwYIm?~1n7c`mP~y>~_1>O7a%)84zH zZFQc@>uK*@(Y89z<@L1pu4r4G=kj{mdsnor&U1M^?Y%47R_D3Ap7!1qZL9NKUQc`P zini5xF0ZG(cSYOkJeSwg-n*i0b)L)XY42UpwmQ${^|be{Xj`4<@_O2PSG29pb9p`O zy(`*Q=efL|_TCk3tMgo5PkZl*w$*tqucy6tMce8;m)FzYyP|D%p3CcL?_JThI?v_x zwD+!PTb<|fdfIzew5`r_c|GmDE814)xxAkC-W6@D^ITp}d+&<2)p;(jr@ePY+v+@* z*VEp+qHT4a%j;?HUD38W&*k;B_pWGLo#*m;+Iv^DtY2Y zTwYIm?~1n7c`mP~y>~_1>O7a%)84zHZFQc@>uK*@(Y89z<@L1pu4r4G=kj{mdsnor z&U1M^?Y%47R_D3Ap7!1qZL9NKUQc`Pini5xF0ZG(cSYOkJeSwg-n*i0b)L)XY42Up zwmQ${^|be{Xj`4<@_O2PSG29pb9p`Oy(`*Q=efL|_TCk3tMgo5PkZl*w$*tqucy6t zMce8;m)FzYyP|D%p3CcL?_JThI?v_xwD+!PTb<|fdfIzew5`r_c|GmDE814)xxAkC z-W6@D^ITp}d+&<2)p;(jr@ePY+v+@**VEp+qHT4a%j;?HUD38W&*k;B_pWGLo#*m; z+Iv^DtY2YTwYIm?~1n7c`mP~y>~_1>O7a%)84zHZFQc@ z>uK*@(Y89z<@L1pu4r4G=kj{mdsnor&U1M^?Y%47R_D3Ap7!1qZL9NKUQc`Pini5x zF0ZG(cSYOkJeSwg-n*i0b)L)XY42UpwmQ${^|be{Xj`4<@_O2PSG29pb9p`Oy(`*Q z=efL|_TCk3tMgo5PkZl*w$*tqucy6tMce8;m)FzYyP|D%p3CcL?_JThI?v_xwD+!P zTb<|fdfIzew5`r_c|GmDE814)xxAkC-W6@D^ITp}d+&<2)p;(jr@ePY+v+@**VEp+ zqHT4a%j;?HUD38W&*k;B_pWGLo#*m;+Iv^Dt@JdCF^9JXLyb^OV=J zc&hZ=<|(gb@l@%#%~M{>;;GVeo2R^%#Z#r{Hcxpii>FG@ZJzR47EhI)+dSp9ES@So zw|UBISv*yGZu6AavUsZW+~z5-W${$$xy@5v%i^ihbDO8Umc>)0=QdAyEsLj0&uyOa zS{6^0p4&X-wJe@0J-2zvYgs&1dT#TS*Rpu3^xWntuVwL6>AB5QUd!UC(sP@qyq3jN zrRO$Jc`b{lO3!Vc@>&*8m7d!?<+UuHDm}M(%4=CXReEmol-II&s`T9EDX(SmROz|R zQ(nvBsnTEuNPkAkir%KOlp7L52PnDkAJms}4o+>@JdCF^9JXLyb^OV=J zc&hZ=<|(gb@l@%#%~M{>;;GVeo2R^%#Z#r{Hcxpii>FG@ZJzR47EhI)+dSp9ES@So zw|UBISv*yGZu6AavUsZW+~z5-W${$$xy@5v%i^ihbDO8Umc>)0=QdAyEsLj0&uyOa zS{6^0p4&X-wJe@0J-2zvYgs&1dT#TS*Rpu3^xWntuVwL6>AB5QUd!UC(sP@qyq3jN zrRO$Jc`b{lO3!Vc@>&*8m7d!?<+UuHDm}M(%4=CXReEmol-II&s`T9EDX(SmROz|R zQ(nvBsnTEuNPkAkir%KOlp7L52PnDkAJms}4o+>@JdCF^9JXLyb^OV=J zc&hZ=<|(gb@l@%#%~M{>;;GVeo2R^%#Z#r{Hcxpii>FG@ZJzR47EhI)+dSp9ES@So zw|UBISv*yGZu6AavUsZW+~z5-W${$$xy@5v%i^ihbDO8Umc>)0=QdAyEsLj0&uyOa zS{6^0p4&X-wJe@0J-2zvYgs&1dT#TS*Rpu3^xWntuVwL6>AB5QUd!UC(sP@qyq3jN zrRO$Jc`b{lO3!Vc@>&*8m7d!?<+UuHDm}M(%4=CXReEmol-II&s`T9EDX(SmROz|R zQ(nvBsnTEuNPkAkir%KOlp7L52PnDkAJms}4o+>@JdCF^9JXLyb^OV=J zc&hZ=<|(gb@l@%#%~M{>;{8==-P=$8cYly{dcXGjwbKvm=Y3)C3wvMK*T2B~SG|AL z*Wc8=_r9?Ah21aW>*;-A?+g3-o4WVj7xuoe`$c>`y)W#2VPAh!_ul)$-WPVih_9#j zg}pEA>u>7bdtcc5!tNLG_4K~5_l14^P2GF%3wvMK{UW}e-WT@1u&=+Vd+&W=?+d$M z#MjgN!rmA5^*43zy)W#2VfTypdU{{j`@+8drtZD>g}pEAei2_!?+bfh*w^3Gz4yMb z_l4ar;_K;sVebq3`kT7<-WT@1u=_=PJ-sjNePLgJQ}^Ec!rm8lzlg7=_l3PL?CWpp z-g{rz`@-%Q@%8k+u=j<1{Y~9_?+bfh*!?2Dp57PszOb*qseA8zVebpOU&Pnb`@-HA z_VqV)@4YYVePQ>D_5ds1NMMhd&6#@d%=JPNFKz-ghLBXi{{D5>-l@f)hn;|;= zynwM3Q4oQEXiPwQGlu=VMsSkWc7=dI9sJJ$IqFzp1_AM}R7PAx?VG{HJA5L=c-~GF zQ+wa7ol;hwAbEmKyB^bDe4yj=pP6_YScDo1PrNS>>>(K2i%lJJ=MyzG47IH*I=25g zRWoJjR8LGrU&L2Ez6unT&GRD)3MtC2Dux|eu#bW~Peo^;2YbWMECG|0jYeCk;A?0wz-_1gVQ%>V8s zj^cyn)U6{YySm-e7g= z1HEsT&5IY}VNy`2pf8_s!FPn6cloUM*0(k0w4R_R;k^VxOw@~V<7uF)(*bN*K>q#6 z%>4hm)OAs3{k^j{0W*-XWPr3fP1UJ7;xK1)HTo)9?@c+@O29h(gZjj~_aZY4*nooMygq~6@q(!P{}Bxy_6sZ{ zAtpH3Gs&UtBl*2QpYU&^rtRH8|HuKDzBIdm^RKHkIA6B0J{<1`dSIE8uH zrd#$!$NwTjw)f=eTarJW)b*d~vHM%VihL{aawCjYR6g5)PTMCET@B>j^JhWoAL z`-k_fM8BES{H?EV$bOgXhX&)lDHrn!c_ImKE`>`^uA z%I!G=zTTA^f_=MkomhAE0yaubW|?_z|6f`ACxfpk5whep!zT-~*O9K9E&gAC$aXwTSbnOg5R{4cO_#x!>^G8dUk_7! z*EsOuQ>SeE&|`hp(AZCxLU|1z%Q=yn4EL?&tA>AudFN*n)5b1K{%Q^eM6SjEyD^^0 z%Q+1FJ7$B;Yfqi7>3;iZ6){au8i-welS&j_uXnBow$Ccu^+NRTn0q0AsSM}xg8qXj z|4-Gusg`^`(?7mxI7J>-=n`#iwe!^H?LmQLLekT(IijgQ&u)ZlCWa)j)ygDg%l80j z@e|3XP5;A&A(daZ(AnZ?1`JRL2cO4y4I*dTcXzVe}6r z$haDgJSkfJXF_pZw0dQt1`{kCMMJnX=FPDTs!#mH7BdY}#@4ZnQO$D`(Q|OHfzN*+ z7jzROu0E8L4gK=pm(~8m&aMrB2QzJSjb)x#7xebb6YtJ(w;Ljp|LtR2j}#HeLn?j} z7SN|M%S)Wh5%ksgk8^6QnYBH*7OC;YiT7RfUt<0O{-*G=v-33zOE~FT!GN62K+*9j zqer^Fd25-YAw)j%!M$$6rM%o!#Eef%`|8n6e&|p{>3EO{4(8Zg@kPQR|V^vo_jZkdSOk?czC7 zMCL<@N~!AyRq0lUW5$@BMApQZ+1_t8Q+AO&_Dv-k{8ySuwNcf~#a zzSm>lAj6a>F7P?}JDID07WB>)koqx(k-aau6zI;k1sI6p_=(n)k8yHG?SsPfmQ%`6 z4y^MYI5am-ZMS4w^35>HqQ4+!E^;iYQjkxAW+%p*ZOEq0EX3SV{`A3jVwe)6nys4l zVF1uAm|`pLL{JpHm3^JYb`8l!33j2qOCl2CUT(dxoYk<(ax-JJ6!P8q^Et6qf(GmM zH&c$8pNUrnPP144t7y837x{Q$x4|}MMn>az?*7^U!KYoc>0?r81pYUePh<<}77AIu z=pahGxV6tRyNPotKGJ1I@wCz3R}CINt3hQ+rlu6P=fow}c>rSIdJC#Y$Pb=r8r3n% zvXc%mrQ)pFMSc)XT1{F{TUKeQqgGE+YjW1K4z=J<=9Z=Gt2GgiGD!$KG*r*4MS+B* z2cY7p$1QWvL4mN*!bU-(@ZaV`-_hHm^;XeU6VB*uawX*7TQ1w#cuKXq3&6Y^9iP+wMhYvHGooI|A*4 z1_JR-3jFCCkrHoQydOjjP5-+@vv$tapk>M9GCmEs#9*6Nah?YKi9rdzl3g1Bs;^j+O9x7WgF&g zOLqEzMwSO==AGNQO0+w9x`{;2ESZ`1kctdZ+|U35mMy-@VKy#VjhxC56q>rvoln5Z zJ=N?gAw5!QU$3yA(eK01qR*to;84o%@M*Vu9M8>iSHC2u){wD#0?p_0)Rq?e^w6aq z6^;o$Yz3EDVW+$Mr>CaL4zKhF#IwdgLXzAh39I185dq!;Jw=m%a)@4Qie;;KmV`Xz zP~eLmkkp`_CW~~H@qmCJsQwHkw34)q%|&0zu9Tzv540D1NVXk4wNf<=+swkx{3V_< zTWLXCro*=WQQL|Y7CbBo*hVo!4i(%6&YGUxGU~&Qbb)FR9%W5sWSZqd5pn5SvR|_N zX*gP)c%vo0ny1l^G830v(RkI!u2?;$lyg6Cz<1f$?StDyre5iA(*ZiibRqig@ws`LvIq6=1jf`JGw$NRk{Mqf0S=8Qqq(5zmzfQsJkfvOQ#6IgXmfShLl34+D7_na)2E z6m?Wia^DjqTK-GxhchFSzRIMTO|vYLym8i4-w6CtbFIspJ@&XlnF>1?l*R zaWkm?x)GCcb7rp&**c-(wyysQ=fzFLPuWR($PuD|eE1nzCDw7=nDI8p?Ze2zaf)=(r7}2$%Gksj%wv zt) z+^K>Ag=0+(GYtR-y=b4)}b}#b&qoU1%oWxP?GxP7M&Jxjai;7mzedm)(!5o7T*6Uc9~LNl6RTJNVT} zg3^@6mo%O@*(4<#UTg>v97rzz14ua*8CfHqe8=%fgU{PeQxwE^Q9-42uC<20yN}6C zKW;!q0~+tHrtt#c8bR`WR~5}4&o9k79>^RtE1E4&1Dc2zjLNcQE~;((h@J@O8>Z?B zz+8_kh7i4=RP}-qg5rkp(25y-^`3dutw;=F3BvSBwjsu@s?Mc_;!=yXX4>K)oFOX5@dj#9BIb~9u9gN3ak zVs}{LMvRSQDlGFJi3Yr4x*o=|X~Oe>)W)`vhwxy`NIrW;Bfe{>+>OI)Mj6c@+3=P0 zfF(>qJrv^iK1~=+la@7{06?9oLm(2>LTJ7XcTjfWv{Qf|H92#gWm9<~H z$>R~DsR8J^2$97F=!-o#Vi;*8w+xRmh|pW4Oo!OI!*q8Qe}wDk z`@!pZFpFjlJkR(V*C@rPzig9ax(9G>w67khP<;1H3ic(rm0<~jEG9^Q5 zIP1zVFyvajNqjN~7$g(BvG=UZ{(fCgK^|Fny_Xp`j}V$gCE%=EkwgQa+jnEQlKs?J1Rsn#YRu@H|Y910EJi8&4BYuk7qqM?<>M&|?)n+mI8 zTJ6A^?ZcH}rzK8Z2LVDHdx&Jxi)i^*ilR!BX8_Axiwa1HRe7ksHI11kF2&~Xu_-*T)|VYr-#QU z3GKPKdglEM>kX^<29|}Z8^?rwK?&f$OxOK?sCA5SA2CJH{UVrgKntRLxs{BRc$`DZ z5(i;g4en3uSjHK)GI+}lph#01bSUux*NB(YC?lWWAqngKpD@YWxuhEZZrYO0=At6H z4r!((cY=+a8Ck8h(OE&ymCkf zYdWSWE2CzPlH$Tx3O3o~cf%bW3D_A2C|f#e5cXr=zF3ky2{KH%ovFyZmh%&cT*Qnz zOv`3WhmVx-;PmwW%uvWuq|05n_3-bV%Rsi0)4^wrh2lRn^@jgle4qzB5B)-C-t~AN z$Gr5R#{Q~ycW|^kId0J)_jhg3WYhY_y?S=>R!Tg5oU5ZazgdB#?FOWwBF|M6RTP

tr?Q? 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�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 xD6Y@6=>thZaQDVR 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

+5+?F|AUhB(Fs(cA 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�YMaMh2s^SEh2K{8*6YSBU5K-W% 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 ro;Jy5r~gC_L<``g`cRN$qzpw1x?AetD*)Y;roB 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 literal 0 HcmV?d00001 diff --git a/startGPRGRAVEL.m b/startGPRGRAVEL.m new file mode 100644 index 0000000..95d9d2a --- /dev/null +++ b/startGPRGRAVEL.m @@ -0,0 +1,64 @@ +function startGPRGRAVEL +%startGPRGRAVEL is the start script that prepares the Matlab path and +%starts the GPRGRAVEL GUI +% +% Syntax: +% startGPRGRAVEL +% +% Inputs: +% none +% +% Outputs: +% none +% +% Example: +% startGPRGRAVEL +% +% Other m-files required: +% GPRGRAVEL.m +% +% Subfunctions: +% none +% +% MAT-files required: +% none +% +% See also GPRGRAVEL +% Author(s): see AUTHORS.md +% License: GNU GPLv3 (at end) + +%------------- BEGIN CODE -------------- + +%% add paths +thisfile = mfilename('fullpath'); +thispath = fileparts(thisfile); +addpath(genpath(fullfile(thispath,'callbacks')),'-end'); +addpath(genpath(fullfile(thispath,'externals')),'-end'); +addpath(genpath(fullfile(thispath,'functions')),'-end'); +addpath(genpath(fullfile(thispath,'GPRGRAVEL')),'-end'); + +%% start GUI +GPRGRAVEL; + +end + +%------------- END OF CODE -------------- + +%% License: +% GNU GPLv3 +% +% GPRGRAVEL +% Copyright (C) 2023 Thomas Hiller +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see .