Skip to content
Snippets Groups Projects
Select Git revision
  • 4799a52663f6cb95de5aef8908fa4701d7f34352
  • 5.4 default protected
  • dev/5.4
  • dev/5.3_downgrade
  • dev/5.5
  • 5.3 protected
  • feature/present_barrier
7 results

NDC_CaveSmall.uasset

Blame
  • possibleMethods.m 5.27 KiB
    classdef possibleMethods
    % Gibt Auskunft über mögliche Berechnungsmethoden der einzelnen
    % Berechnungsabschnitte (T, R, G, B, H, C) und enthält eine Funktion zum
    % überprüfen des Methodenstructs
    
    % pmd Berechnungstool Lagerimpedanz
    % Autor: Steffen Puchtler, Julius van der Kuip
    
        methods (Static) % Diese Klasse enthält ausschließlich statische Methoden, sodass kein Objekt initialisiert werden muss
            function s = T
                s = {'linear','Vogel'};
            end
            function s = R
                s = {};
            end
            function s = G
                s = {};
            end
            function s = B
                s = {'static','dynamic'};
            end
            function s = H
                s = {'Hamrock/Dowson','Moes'};
            end
            function s = C
                s.unloadedRE  = {           'neglect','Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'};
                s.outsideArea = {'k-factor','neglect','Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'};
            end
            
            function s = Default
            % Gibt ein Rechenmethoden-Struct mit den Default-Methoden aus
                s.T = 'Vogel';
                s.B = 'static';
                s.H = 'Hamrock/Dowson';
                s.C.unloadedRE  = 'semianalytisch3D';
                s.C.outsideArea = 'semianalytisch3D';
            end
            
            function method = addDefault(method)
            % Ergänzt ein unvollständiges Rechenmethoden-Struct mit den
            % Default-Werten
                arguments
                    method (1,1) struct
                end
                defaultMethod = possibleMethods.Default;
                for ii = fields(defaultMethod)'
                    if ~isfield(method,ii{1}) % Falls Feld ii nicht besetzt,
                        method.(ii{1}) = defaultMethod.(ii{1}); % überschreibe mit default
                    elseif isstruct(defaultMethod.(ii{1}))  % falls zweite Ebene existiert
                        for jj = fields(defaultMethod.(ii{1}))'
                            if ~isfield(method.(ii{1}),jj{1}) % Falls Feld ii in jj nicht besetzt
                                method.(ii{1}).(jj{1}) = defaultMethod.(ii{1}).(jj{1});
                            end
                        end   
                    end
                end
            end
            
            function success = check(method,throwError)
            % prüft, ob das Struct method ausschließlich valide Feld- und Methodennamen enthält
            % optional: throwError = true gibt error-Meldungen aus
                arguments
                    method (1,1) struct
                    throwError (1,1) logical = false
                end
                success = true;
                for ii = fields(method)'
                    if ~any(strcmp(ii,methods(possibleMethods)')) % Prüft Feldname in erster Ebene
                        success = false;
                        if throwError