WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Numerische Fehler bei Druckverteilung in engem Ringspalt

 

Thomaslob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2019, 09:34     Titel: Numerische Fehler bei Druckverteilung in engem Ringspalt
  Antworten mit Zitat      
Hallo zusammen,

habe folgendes Problem:

Ich möchte mit folgendem Skript die Geschwindigkeits und Druckverteilung in einem Ringspalt von 50µm Höhe plotten.
Habe mir das Ganze aus den Navier-Stokes-Gleichungen hergeleitet.

Code:

clear, clc
format long  

r1=0.0234140158;%m
r2=0.0234632492;%m

omega1=418.879; %rad/s 4000rpm
omega2=0;%rad/s

C=1.28E+11; %50bar dp

rho=840 %kg/m3
p1=1.5e6 %Pa

fun = @root2d;
x0 = [1.6731e11,0.0001e11];
x = fsolve(fun,x0)

r = [0.0234140158:0.000001:0.0234632492];
y1 = x(1).*r+(x(2).*r.^-1)+log(r).*r.*0.5.*C; %Winkelgeschw.
v1 = y1.*r   %Bahngeschw.


C3=vpa( p1-(0.0625.*r1^2.*(8.*x(1).^2-4.*x(1)*C+C^2)+2.*x(1).*x(2).*log1p(r1-1)+0.5.*C.*r1.^2.*(x(1)-0.25*C).*log1p(r1-1)-0.5.*(r1.^-2)*x(2).^2+0.125*C.*(log1p(r1-1).^2).*(4.*x(2)+C.*r1.^2))*rho,512)
p =vpa((0.0625.*r.^2.*(8.*x(1).^2-4.*x(1)*C+C^2)+2.*x(1).*x(2).*log1p(r-1)+0.5*C.*r.^2.*(x(1)-0.25*C).*log1p(r-1)-0.5.*(r.^-2)*x(2).^2+0.125*C.*(log1p(r-1).^2).*(4.*x(2)+C.*r.^2))*rho+C3,512)

figure
plot(r,v1)

figure
plot(r,vpa(p,512))

 


In der Funktion root2D steht folgendes:

Code:

function F = root2d(x)
r1=0.0234140158;%m
r2=0.0234632492;%m
omega1=418.879;
omega2=0;
C=1.28E+11; %50bar


F(1) = -omega1+x(1)*r1+x(2)/r1+C/2*log(r1)*r1;
F(2) = -omega2+x(1)*r2+x(2)/r2+C/2*log(r2)*r2;


end

 


Die berechneten Integrationskonstanten passen auch soweit. Die Geschwindigkeitsverteilung hält die Ranbedingungen ein und wird auch richtig geplottet. Problem ist, man muss einen guten Startwert erraten, um auf die richtige Lösung zu kommen mit fsolve.

Der Plot der Druckverteilung sieht aber sehr komisch aus. Es sieht stark nach numerischen Fehlern aus?

Ich fürchte, dass dies an meinen sehr kleinen Argumenten und an den teilweise sehr großen Funktionswerten liegt.

Links in der angehängten ersten Grafik ist der Geschwindigkeitsplot zu sehen, rechts der Druck für eine Spalthöhe von 50µm.

Wenn ich den Spalt künstlich auf 1mm erhöhe (2.Bild) und r1 und r2 anpasse, ergibt sich der Plot in der zweiten angehängten Grafik, der schon etwas besser aussieht. Wenn ich auf 2mm erhöhe, kann man damit auch wirklich etwas anfangen. (3.Bild)

Wie kriege ich das auch für meinen 50µm Spalt hin?

Habe schon statt log(x) log1p(x-1) verwendet und auch vpa benutzt, sowie format long.

Hat noch jemand eine andere Idee?

Danke schonmal im Vorraus!

Grüße
Thomas

2mm.png
 Beschreibung:
Spalt 2mm

Download
 Dateiname:  2mm.png
 Dateigröße:  52.24 KB
 Heruntergeladen:  303 mal
1mm.png
 Beschreibung:
Spalt 1mm

Download
 Dateiname:  1mm.png
 Dateigröße:  59.9 KB
 Heruntergeladen:  297 mal
2019-03-06_17h56_38.jpg
 Beschreibung:
Spalt 50µm

Download
 Dateiname:  2019-03-06_17h56_38.jpg
 Dateigröße:  72.83 KB
 Heruntergeladen:  320 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.425
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.03.2019, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

kann es sein, dass Abweichungen in x das Problem sind? fsolve löst ja numerisch.

Dann könnte solve eine Alternative sein.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomaslob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2019, 14:03     Titel:
  Antworten mit Zitat      
Hallo,

danke für die Antwort, aber kann ich mit solve auch das nichtlineare Gleichungssystem lösen?

Und fsolve löst ja nur die Konstanten, die aber wie man im Geschwindigkeitsplot sieht passen. Dieselben Konstanten werden ja auch für den Druck verwendet.
Danach wird noch eine Konstante direkt gelöst(C3).

Grüße
Thomas
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.425
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.03.2019, 14:24     Titel:
  Antworten mit Zitat      
Hallo,

solve wird bei der Gleichung in der Tat schwierig, aber vpasolve geht:
Code:
syms x1 x2;
xSym = vpasolve([-omega1+x1*r1+x2/r1+C/2*log(r1)*r1==0, ...
    -omega2+x1*r2+x2/r2+C/2*log(r2)*r2], [x1, x2])


Dass bei 512 Stellen noch numerische Fehler auftreten, würde mich verwundern. Kannst du denn etwas eingrenzen, wo das Problem liegt?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.