Skip to content
Snippets Groups Projects
Commit 31d510d8 authored by sp89hili's avatar sp89hili
Browse files

Pu_add thermal correction and starvation correction to method.H and calcFilm,...

Pu_add thermal correction and starvation correction to method.H and calcFilm, allow to set H.filmThicknessFomula straight by accessing H and set both C methods when setting C straight, notify BearImp-Obj when subOption was changed
parent ae70ed82
No related branches found
No related tags found
No related merge requests found
...@@ -76,6 +76,7 @@ classdef BearImp < handle & matlab.mixin.Copyable ...@@ -76,6 +76,7 @@ classdef BearImp < handle & matlab.mixin.Copyable
obj.resolutionPerRotation = 360; obj.resolutionPerRotation = 360;
end end
end end
obj.method = BearImpOptions;
addlistener(obj.method,'optionChanged',@(src,event) obj.methodChangedFcn(src,event)); addlistener(obj.method,'optionChanged',@(src,event) obj.methodChangedFcn(src,event));
end end
end end
......
function varargout = calcFilm(obj, options) function h_0 = calcFilm(obj, options)
%2.5 Schmierfilmdicke H = H(S,T,G,B,T_Oil,n) %2.5 Schmierfilmdicke H = H(S,T,G,B,T_Oil,n)
%Berechnet die Hertz'schen Flächen sowie die Schmierfilmdicken aller %Berechnet die Hertz'schen Flächen sowie die Schmierfilmdicken aller
%Einzelkontakt (innen und außen für alle belasteten Wälzkörper) %Einzelkontakt (innen und außen für alle belasteten Wälzkörper)
...@@ -71,23 +71,14 @@ H.W = Q_temp./(E_red_tmp .* R_x_temp.^2); ...@@ -71,23 +71,14 @@ H.W = Q_temp./(E_red_tmp .* R_x_temp.^2);
H.L = H.G .* H.U.^0.25; H.L = H.G .* H.U.^0.25;
H.M = H.W.*(2.*H.U).^(-3/4); H.M = H.W.*(2.*H.U).^(-3/4);
switch H.method switch H.method.filmThicknessFormula
case {'Hamrock/Dowson','Hamrock/Dowson_withoutThermCorr'} case 'Hamrock/Dowson'
H.H_0 = 2.69 * H.G.^0.53 .* H.U.^0.67 .* H.W.^-0.067 .* (1-0.61*exp(-0.73.*G.k)); H.H_0 = 2.69 * H.G.^0.53 .* H.U.^0.67 .* H.W.^-0.067 .* (1-0.61*exp(-0.73.*G.k));
H.H_min = 3.63 * H.G.^0.49 .* H.U.^0.68 .* H.W.^-0.073 .* (1- exp(-0.68.*G.k)); H.H_min = 3.63 * H.G.^0.49 .* H.U.^0.68 .* H.W.^-0.073 .* (1- exp(-0.68.*G.k));
H.h_0raw = H.H_0 .*R_x_temp; % without correction factors H.h_0 = H.H_0 .*R_x_temp;
H.h_min = H.H_min.*R_x_temp; H.h_min = H.H_min.*R_x_temp;
H.L_therm = T.eta_0 .* T.alpha_etaT .* H.u.^2 ./ (4*S.lambda);
if H.method == 'Hamrock/Dowson'
H.C_korr = 3.94 ./ (3.94 + H.L_therm.^0.62);
else
H.C_korr = 1;
end
H.h_0 = H.h_0raw.*H.C_korr;
H.h_minth = H.h_min .*H.C_korr;
case 'Moes' case 'Moes'
H.lamda = R_x_temp./R_y_temp; H.lamda = R_x_temp./R_y_temp;
H.N = H.W .* H.lamda.^0.5 .* H.U.^(-0.75); H.N = H.W .* H.lamda.^0.5 .* H.U.^(-0.75);
...@@ -106,8 +97,29 @@ switch H.method ...@@ -106,8 +97,29 @@ switch H.method
H.h_0 = H.H_0 .*R_x_temp .* H.U.^(0.5); H.h_0 = H.H_0 .*R_x_temp .* H.U.^(0.5);
end end
if H.method.thermalCorrection == 'on'
H.L_therm = T.eta_0 .* T.alpha_etaT .* H.u.^2 ./ (4*S.lambda);
H.C_thCorr = 3.94 ./ (3.94 + H.L_therm.^0.62);
H.h_0 = H.h_0.*H.C_thCorr;
if isfield(H,'h_min')
H.h_min = H.h_min .*H.C_thCorr;
end
end
if H.method.starvationCorrection == 'on' % according to SKF according to Schneider 2021 !!! In my opinion a factor for the friction not for lubrication film thickness
H.K_rs = 3e-8; % 3e-8 for low level oil bath/oil jet lubrication, 6e−8 for grease/oil-air lubrication
H.K_Z = 3.1; % 3.1 for single row deep groove ball bearings, 5.1 for cylindrical roller bearings with cage
T.nu_0 = T.eta_0 ./ T.rho(T_Oil); %(kin. viskosity at ambient pressure at oil temperature)
n = omega/2/pi*60; % in rpm
H.C_rsCorr = 1./exp(H.K_rs*T.nu_0*1e6*n*(L.d+L.D)*1e3*sqrt(H.K_Z/(2*(L.D-L.d)*1e3)));
H.h_0 = H.h_0.*H.C_rsCorr;
if isfield(H,'h_min')
H.h_min = H.h_min .*H.C_rsCorr;
end
end
if isPreCalc if isPreCalc
varargout{1} = H.h_0; h_0 = H.h_0;
return return
end end
...@@ -123,8 +135,8 @@ end ...@@ -123,8 +135,8 @@ end
% Überprüfen, ob die Schmierfilmberechnung innerhalb des vorgegeben % Überprüfen, ob die Schmierfilmberechnung innerhalb des vorgegeben
% Bereichs liegt % Bereichs liegt
switch H.method switch H.method.filmThicknessFormula
case {'Hamrock/Dowson','Hamrock/Dowson_withoutThermCorr'} case 'Hamrock/Dowson'
rangeLoadParM = [25,500]; % Quelle: Non-Dimensional Groups, Marian 2020, Fig7 rangeLoadParM = [25,500]; % Quelle: Non-Dimensional Groups, Marian 2020, Fig7
rangeViscParL = [5,15]; rangeViscParL = [5,15];
......
...@@ -23,7 +23,8 @@ switch T.method ...@@ -23,7 +23,8 @@ switch T.method
T.eta_00 = T.eta_040 - T.alpha_eta.*40; T.eta_00 = T.eta_040 - T.alpha_eta.*40;
T.alpha_nu = (S.nu_100 - S.nu_40)/60; T.alpha_nu = (S.nu_100 - S.nu_40)/60;
T.nu_0 = S.nu_40 - T.alpha_nu.*40; T.nu_0 = S.nu_40 - T.alpha_nu.*40;
T.eta_0 = T.eta_00 + T.alpha_eta.*T_Oil; T.eta = @(T) T.eta_00 + T.alpha_eta.*T;
T.eta_0 = T.eta(T_Oil);
T.nu_38 = T.nu_0 + T.alpha_nu.*38; T.nu_38 = T.nu_0 + T.alpha_nu.*38;
case 'Vogel' case 'Vogel'
assert(~any(isnan([S.B S.C S.K])),'Vogel-Parameters not given for the selected lubricant. Choose method.T = ''linear''') assert(~any(isnan([S.B S.C S.K])),'Vogel-Parameters not given for the selected lubricant. Choose method.T = ''linear''')
......
...@@ -30,7 +30,9 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m ...@@ -30,7 +30,9 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m
function possibleOption = Possible function possibleOption = Possible
possibleOption.T = {'linear','Vogel'}; possibleOption.T = {'linear','Vogel'};
possibleOption.B = {'static','dynamic'}; possibleOption.B = {'static','dynamic'};
possibleOption.H = {'Hamrock/Dowson','Hamrock/Dowson_withoutThermCorr','Moes'}; possibleOption.H.filmThicknessFormula = {'Hamrock/Dowson','Moes'};
possibleOption.H.thermalCorrection = {'on','off'};
possibleOption.H.starvationCorrection = {'on','off'};
possibleOption.C.unloadedRE = { 'neglect','stateOfTheArt', 'Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'}; possibleOption.C.unloadedRE = { 'neglect','stateOfTheArt', 'Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'};
possibleOption.C.outsideArea = {'k-factor','neglect','stateOfTheArt','Schneider_k_c','Schneider_k_vh','Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'}; possibleOption.C.outsideArea = {'k-factor','neglect','stateOfTheArt','Schneider_k_c','Schneider_k_vh','Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'};
end end
...@@ -39,11 +41,20 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m ...@@ -39,11 +41,20 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m
% Gibt ein Rechenmethoden-Struct mit den Default-Methoden aus % Gibt ein Rechenmethoden-Struct mit den Default-Methoden aus
defaultOption.T = 'Vogel'; defaultOption.T = 'Vogel';
defaultOption.B = 'dynamic'; defaultOption.B = 'dynamic';
defaultOption.H = 'Hamrock/Dowson'; defaultOption.H.filmThicknessFormula = 'Hamrock/Dowson';
defaultOption.H.thermalCorrection = 'on';
defaultOption.H.starvationCorrection = 'off';
defaultOption.C.unloadedRE = 'semianalytisch3D'; defaultOption.C.unloadedRE = 'semianalytisch3D';
defaultOption.C.outsideArea = 'semianalytisch3D'; defaultOption.C.outsideArea = 'semianalytisch3D';
end end
function subOptionsCell = subOptionsSetWith
% Gibt an, welche suboptions geändert werden sollen, wenn versucht
% wird, eine Option mit Unteroptionen direkt zu setzen.
subOptionsCell.H = {'filmThicknessFormula'};
subOptionsCell.C = {'unloadedRE','outsideArea'};
end
function allCategories = AllCategories function allCategories = AllCategories
allCategories = [{'main'} fieldnames(BearImpOptions.Possible)']; allCategories = [{'main'} fieldnames(BearImpOptions.Possible)'];
mainNames = fieldnames(BearImpOptions.Possible); mainNames = fieldnames(BearImpOptions.Possible);
...@@ -200,7 +211,16 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m ...@@ -200,7 +211,16 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m
function set_optionChosen(obj,subOptionName,optionChoice) function set_optionChosen(obj,subOptionName,optionChoice)
objBefore = obj.copy; objBefore = obj.copy;
if ischar(optionChoice) || isstring(optionChoice) if ischar(optionChoice) || isstring(optionChoice)
assert(~obj.(subOptionName).hasSubSubOptions || strcmp(optionChoice,'default'),[obj.(subOptionName).optionName ' has suboptions. Set suboptions individually or set to ''default''.']) assert(~obj.(subOptionName).hasSubSubOptions || ...
isfield(BearImpOptions.subOptionsSetWith,subOptionName) || ...
strcmp(optionChoice,'default'),...
[obj.(subOptionName).optionName ' has suboptions. Set suboptions individually or set to ''default''.'])
if isfield(BearImpOptions.subOptionsSetWith,subOptionName)
for subsub = BearImpOptions.subOptionsSetWith.(subOptionName)
obj.(subOptionName).(subsub{:}) = optionChoice;
end
return
end
mustBeMember(optionChoice,[obj.(subOptionName).possibleSubOptions {'default'}]) mustBeMember(optionChoice,[obj.(subOptionName).possibleSubOptions {'default'}])
if ~obj.(subOptionName).hasSubSubOptions && strcmp(optionChoice,obj.(subOptionName).defaultOption) if ~obj.(subOptionName).hasSubSubOptions && strcmp(optionChoice,obj.(subOptionName).defaultOption)
optionChoice = 'default'; optionChoice = 'default';
...@@ -209,7 +229,6 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m ...@@ -209,7 +229,6 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m
if strcmp(optionChoice,'default') if strcmp(optionChoice,'default')
if obj.(subOptionName).hasSubSubOptions if obj.(subOptionName).hasSubSubOptions
for sub = obj.(subOptionName).possibleSubOptions for sub = obj.(subOptionName).possibleSubOptions
disp(sub{:})
obj.(subOptionName).(sub{:}).optionChosen = 'default'; obj.(subOptionName).(sub{:}).optionChosen = 'default';
end end
end end
...@@ -232,9 +251,9 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m ...@@ -232,9 +251,9 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m
end end
[isEqual,optionsChanged] = eq(obj,objBefore); [isEqual,optionsChanged] = eq(obj,objBefore);
if ~isEqual if ~isEqual
obj.optionsLastChanged = optionsChanged; mainObj = obj.getMainObj;
notify(obj,'optionChanged') mainObj.optionsLastChanged = optionsChanged;
%disp(optionsChanged) notify(mainObj,'optionChanged')
end end
end end
end end
...@@ -278,5 +297,15 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m ...@@ -278,5 +297,15 @@ classdef BearImpOptions < handle & dynamicprops & matlab.mixin.CustomDisplay & m
end end
end end
end end
function mainObj = getMainObj(obj)
switch obj.optionLevel
case 1
mainObj = obj;
case 2
mainObj = obj.parent;
case 3
mainObj = obj.parent.parent;
end
end
end end
end end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment