Skip to content
Snippets Groups Projects
Commit 10227468 authored by Puchtler, Steffen's avatar Puchtler, Steffen
Browse files

Pu_savable k_c befor calcCap, save calculated k_c (ebd337b5)

Pu_Correct C-Method state of the art, update InputData.xlsx (68e70f9e)
Pu_add Schneider factors, forgot to tick calcCap with last commit (ecc3ee42)
Pu_Methods Schneider_k_c and Schneider_k_vh added, G.k added, testprogram updated (81c848d5)
Pu_For method.T='Vogel' use Vogel Equation to determine eta_40 and eta_100... (44680868)
parent c57af912
Branches
Tags
No related merge requests found
......@@ -16,7 +16,7 @@ assert(obj.up2date.G,'Lagergeometrie in Abhängigkeit des Lagerspiels noch nicht
assert(obj.up2date.B,'Belastungsverteilung noch nicht berechnet')
assert(obj.up2date.H,'Schmierfilmdicke noch nicht berechnet')
L = obj.L; S = obj.S; T = obj.T; G = obj.G; B = obj.B; H = obj.H; AddOn = obj.AddOn; psi = obj.psi;
C = struct;
C = obj.C;
method = possibleMethods.addDefault(obj.method).C;
if ~isfield(C,'k_C')
C.k_C = 1;
......@@ -62,6 +62,10 @@ for posBall_conductive=1:L.numberOfConductiveBalls
tempR_li = G.R_li(ballMaterialInd(posBall_conductive));
tempR_la = G.R_la(ballMaterialInd(posBall_conductive));
tempR_RE = G.R_RE(ballMaterialInd(posBall_conductive));
if any(strcmp(method.outsideArea,{'Schneider_k_c','Schneider_k_vh'}))
tempG = H.G (:,:,posBall_conductive);
tempW = H.W (:,:,posBall_conductive);
end
contactInd=B.contactInd(posBall_conductive,:);
......@@ -101,22 +105,26 @@ for posBall_conductive=1:L.numberOfConductiveBalls
case {'TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche'}
tobias_steffen(B.noContactInd)
case 'semianalytisch3D'
vecStruct=splitVec(contactInd,false);
for recentVec=length(vecStruct)
runSemianalytisch3D(vecStruct{recentVec})
end
end
end
switch method.outsideArea
case 'neglect'
case 'k-factor'
C.C_Hertz(:,contactInd,posBall_conductive) = C.k_C .* obj.epsilon_0 .* C.epsilon_primeOil(:,contactInd) .* temp_A(:,contactInd) ./ H.h_minth(:,contactInd);
C.C_out(:,contactInd,posBall_conductive) = (C.k_C-1) .* C.C_Hertz(:,contactInd,posBall_conductive);
case 'stateOfTheArt'
stateOfTheArt(find(contactInd==1))
case 'Schneider_k_c'
C.k_c = 9.5923 * H.U.^0.3305 .* tempG.^0.3413 .* tempW.^(-0.3342) .* G.k.^0.1391;
%C.C_Hertz(:,contactInd,posBall_conductive) = k_c(:,contactInd,posBall_conductive) .* C.C_Hertz(:,contactInd,posBall_conductive);
C.C_out(:,contactInd,posBall_conductive) = (C.k_c (:,contactInd,posBall_conductive)-1) .* C.C_Hertz(:,contactInd,posBall_conductive);
case 'Schneider_k_vh'
C.k_vh = 0.7772 * H.U.^0.0451 .* tempG.^0.1522 .* tempW.^(-0.0245) .* G.k.^(-0.0921);
C.C_out(:,contactInd,posBall_conductive) = (C.k_vh(:,contactInd,posBall_conductive)-1) .* C.C_Hertz(:,contactInd,posBall_conductive);
case 'Leander_Parallel'
leander_parallel(B.contactInd)
case 'Leander_Radial'
......@@ -126,9 +134,7 @@ for posBall_conductive=1:L.numberOfConductiveBalls
case {'TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche'}
tobias_steffen(B.contactInd)
case 'semianalytisch3D'
vecStruct=splitVec(contactInd,true);
for recentVec=1:length(vecStruct)
runSemianalytisch3D(vecStruct{recentVec})
end
......@@ -174,13 +180,15 @@ function calcZg
end
function stateOfTheArt(indices)
y_max_i = @(x) G.R_y(1).*(1-x.^2./2./G.R_x(1).^2);
y_max_a = @(x) G.R_y(2).*(1-x.^2./2./G.R_x(2).^2);
y_max_i = @(x) G.R_y(1).*(1-x.^2./G.R_x(1).^2);
y_max_a = @(x) G.R_y(2).*(1-x.^2./G.R_x(2).^2);
for ii = indices
h_i = @(x,y) B.s(ii) + x.^2./2./G.R_x(1) + y.^2./2./G.R_y(1);
h_a = @(x,y) B.s(ii) + x.^2./2./G.R_x(2) + y.^2./2./G.R_y(2);
C.C_out(1,ii) = 4 * obj.epsilon_0 * S.epsilon_Oel * integral2(@(x,y) 1./h_i(x,y),temp_a(1,ii),G.R_x(1),temp_b(1,ii),y_max_i);
C.C_out(2,ii) = 4 * obj.epsilon_0 * S.epsilon_Oel * integral2(@(x,y) 1./h_a(x,y),temp_a(2,ii),G.R_x(2),temp_b(2,ii),y_max_a);
y_min_i = @(x) temp_b(1,ii) .* sqrt(1 - min(x.^2./temp_a(1,ii).^2,1));
y_min_a = @(x) temp_b(2,ii) .* sqrt(1 - min(x.^2./temp_a(2,ii).^2,1));
C.C_out(1,ii) = 4 * obj.epsilon_0 * S.epsilon_Oel * integral2(@(x,y) 1./max(h_i(x,y),temp_h_0(1,ii)),temp_a(1,ii),G.R_x(1),y_min_i,y_max_i);
C.C_out(2,ii) = 4 * obj.epsilon_0 * S.epsilon_Oel * integral2(@(x,y) 1./max(h_a(x,y),temp_h_0(1,ii)),temp_a(2,ii),G.R_x(2),y_min_a,y_max_a);
end
end
......
......@@ -29,7 +29,7 @@ assert(obj.up2date.L,'Lager nicht gesetzt')
assert(obj.up2date.S,'Schmierstoff nicht gesetzt')
assert(obj.up2date.T,'Schmierstoffparameter noch nicht berechnet')
assert(obj.up2date.G,'Lagergeometrie in Abhängigkeit des Lagerspiels noch nicht berechnet')
if isPreCalc == 0
if ~isPreCalc
assert(obj.up2date.B,'Belastungsverteilung noch nicht berechnet')
end
L=obj.L; S = obj.S; T = obj.T; G = obj.G; B = obj.B; T_Oil = obj.T_Oil; omega = obj.omega;
......@@ -55,7 +55,7 @@ switch isPreCalc
end
H.b = (6*[G.fraktE_i;G.fraktE_a].*Q_temp.*reshape([G.R_si(ballMaterialInd);G.R_sa(ballMaterialInd)],2,1,[]) ./ (pi*[G.k_i;G.k_a].*reshape([G.E_red(ballMaterialInd);G.E_red(ballMaterialInd)],2,1,[]))).^(1/3);
H.a = [G.k_i;G.k_a].*H.b;
H.a = G.k.*H.b;
H.A = pi*H.a.*H.b;
H.p =Q_temp./H.A;
H.alpha_p = 1 ./ (S.a_1 + S.a_2*T_Oil + (S.b_1 + S.b_2*T_Oil).*H.p);
......@@ -73,9 +73,8 @@ H.M = H.W.*(2.*H.U).^(-3/4);
switch method
case {'Hamrock/Dowson','Hamrock/Dowson_withoutThermCorr'}
k_tmp = [G.k_i;G.k_a];
H.H_0 = 2.69 * H.G.^0.53 .* H.U.^0.67 .* H.W.^-0.067 .* (1-0.61*exp(-0.73.*k_tmp));
H.H_min = 3.63 * H.G.^0.49 .* H.U.^0.68 .* H.W.^-0.073 .* (1- exp(-0.68.*k_tmp));
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_0raw = H.H_0 .*R_x_temp; % without correction factors
H.h_min = H.H_min.*R_x_temp;
H.L_therm = T.eta_0 .* T.alpha_etaT .* H.u.^2 ./ (4*S.lambda);
......@@ -113,7 +112,7 @@ if isPreCalc
end
if strcmp(possibleMethods.addDefault(obj.method).B,'static')
assume(ndims(H.h_0) <= 2,'h_0 must be two dimensional to calculate film for static load distribution') % probably obsolete
assert(ndims(H.h_0) <= 2,'h_0 must be two dimensional to calculate film for static load distribution') % probably obsolete
B.s=zeros(2,B.numOfCagePositions,L.numberOfConductiveBalls);
B.s(1,B.noContactInd') = B.intersectionBall(1,B.noContactInd)';
......
......@@ -82,6 +82,7 @@ k_a_fkt = @(k_a) (1-2/(k_a^(2)-1)*((fraktF(k_a)/fraktE(k_a))-1)-G.F_a);
G.k_i = fzero(k_i_fkt,5);
G.k_a = fzero(k_a_fkt,5);
G.k = [G.k_i;G.k_a];
G.fraktF_i = fraktF(G.k_i);
G.fraktF_a = fraktF(G.k_a);
......
......@@ -14,11 +14,11 @@ T.method = possibleMethods.addDefault(obj.method).T;
%% Berechnung
T.rho = @(theta) S.rho_15.*(1 - S.alpha_rho.*(theta-15));
T.eta_040 = T.rho(40).*S.nu_40;
T.eta_0100 = T.rho(100).*S.nu_100;
T.alpha_etaT = log(T.eta_040/T.eta_0100)/60;
switch T.method
case 'linear'
assert(~any(isnan([S.nu_40 S.nu_100])),'Viscosity values not given for the selected lubricant. Choose method.T = ''Vogel''')
T.eta_040 = T.rho(40).*S.nu_40;
T.eta_0100 = T.rho(100).*S.nu_100;
T.alpha_eta = (T.eta_0100-T.eta_040)/60;
T.eta_00 = T.eta_040 - T.alpha_eta.*40;
T.alpha_nu = (S.nu_100 - S.nu_40)/60;
......@@ -27,11 +27,13 @@ switch T.method
T.nu_38 = T.nu_0 + T.alpha_nu.*38;
case 'Vogel'
assert(~any(isnan([S.B S.C S.K])),'Vogel-Parameters not given for the selected lubricant. Choose method.T = ''linear''')
T.eta_0 = S.K .* exp(S.B ./ (T_Oil + S.C));
eta_38 = S.K .* exp(S.B ./ (40 + S.C));
T.nu_38 = eta_38 ./ T.rho(38);
T.eta = @(T) S.K .* exp(S.B ./ (T + S.C));
T.eta_0 = T.eta(T_Oil);
T.eta_040 = T.eta( 40 );
T.eta_0100 = T.eta( 100 );
T.nu_38 = T.eta(38) ./ T.rho(38);
end
T.alpha_etaT = log(T.eta_040/T.eta_0100)/60;
%% Attribute ändern
obj.T = T;
......
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -24,13 +24,13 @@ classdef possibleMethods
end
function s = C
s.unloadedRE = { 'neglect','stateOfTheArt', 'Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'};
s.outsideArea = {'k-factor','neglect','stateOfTheArt','Leander_Parallel','Leander_Radial','LeanderSteffen','TobiasSteffen_Kugelfläche','TobiasSteffen_Laufbahnfläche','semianalytisch3D'};
s.outsideArea = {'k-factor','neglect','stateOfTheArt','Schneider_k_c','Schneider_k_vh','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.B = 'dynamic';
s.H = 'Hamrock/Dowson';
s.C.unloadedRE = 'semianalytisch3D';
s.C.outsideArea = 'semianalytisch3D';
......
......@@ -44,6 +44,10 @@ msgbox(msgText,'Programm Update','replace' );
% Berechnung
c = BearImp('default');
c.setBearing("6205-C3 mix")
c.method.H = 'Hamrock/Dowson';
c.method.B = 'dynamic';
c.method.C.outsideArea = 'stateOfTheArt';
c.method.C.unloadedRE = 'stateOfTheArt';
c.calculate
assert(length(c.psi) == length(c.psi_calc), 'psi_calc entspricht nicht dem optimalen Winkelvektor! Es ist die Funktion ''find_nessecary_psi'' in caculate zu überprüfen.')
......@@ -59,6 +63,8 @@ msgbox(msgText,'Programm Update', 'replace');
%% 4. Testlauf (d) [Mix-Lager mit wenigeren Abtastpunkten]
% Berechnung
d = BearImp;
d.method.H = 'Hamrock/Dowson';
d.method.B = 'static';
d.F_r = 3000; %Bereich zwischen 920-1020
d.F_a = 0;
......@@ -81,6 +87,10 @@ msgbox(msgText,'Programm Update','replace');
%% 5. Testlauf (e,f) [werden Fehlermeldungen richtig ausgeführt?]
e = BearImp('default');
e.method.H = 'Moes';
e.method.B = 'dynamic';
e.method.C.outsideArea = 'Schneider_k_c';
e.method.C.unloadedRE = 'neglect';
e.psi = [0, 20, 30, 90, 130, 180, 201, 200, 270, 360]/360*2*pi;
try
e.calculate
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment