diff --git a/@BearImp/calcCap.m b/@BearImp/calcCap.m
index 144e93fc2779503034c65cf5684e47603ffbb120..d391d9afcd16330bdad8f6057326d9a9b71996ac 100644
--- a/@BearImp/calcCap.m
+++ b/@BearImp/calcCap.m
@@ -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);
-            
+                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);
-                
+            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
 
diff --git a/@BearImp/calcFilm.m b/@BearImp/calcFilm.m
index b2cb8ad039fa38c494f84fd5e9dba82bc12dfb1b..b734c6fea58d2c4852fa26412dc14b815189cce9 100644
--- a/@BearImp/calcFilm.m
+++ b/@BearImp/calcFilm.m
@@ -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)';
diff --git a/@BearImp/calcGeo.m b/@BearImp/calcGeo.m
index e00841f7a9625b679ab628221e010b0c2673ba72..ba88b490a5035fb417d5d676ab1088422be533fb 100644
--- a/@BearImp/calcGeo.m
+++ b/@BearImp/calcGeo.m
@@ -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);
diff --git a/@BearImp/calcLub.m b/@BearImp/calcLub.m
index c31043dbbb9d2ae36c48428db80ba68328d4d9bf..79b871500ac4c612074cce797ea8076ce27ff8ce 100644
--- a/@BearImp/calcLub.m
+++ b/@BearImp/calcLub.m
@@ -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;
diff --git a/InputData.xlsx b/InputData.xlsx
index 40ea2b3f6e53523dfac281d97872c807849d40e8..b05ad322385e1b14a930a628e0de318cd9048e8f 100644
Binary files a/InputData.xlsx and b/InputData.xlsx differ
diff --git a/possibleMethods.m b/possibleMethods.m
index e96d4efc7c916f03ccbc9e8ab72066fcf25e95f5..f92daad6ff0cda72758ec925432bc398c5783912 100644
--- a/possibleMethods.m
+++ b/possibleMethods.m
@@ -23,14 +23,14 @@ classdef possibleMethods
             s = {'Hamrock/Dowson','Hamrock/Dowson_withoutThermCorr','Moes'};
         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.unloadedRE  = {           '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';
diff --git a/testProgram.m b/testProgram.m
index c72da0db77611958690d1c4c597829b3a1aa425f..08ee092f819fce200c6325a21572e26db460ea78 100644
--- a/testProgram.m
+++ b/testProgram.m
@@ -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