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

Finite Differenzen Diffusion

 

crackheinzi.n
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2015, 20:44     Titel: Finite Differenzen Diffusion
  Antworten mit Zitat      
Moin Moin!

Also in dem Thread geht es um Chlorid-Diffusion durch Beton.
Diese Diffusion soll mit Finiten Differenzen beschrieben werden.
Ich hab dies explizit diskretisiert.

In der beiliegenden PDF-Datei habe ich mal die Werte per Hand ausgerechnet.
Dabei beschreibt C1 die Konzentration direkt an der Betonoberfläche und geht dann in dx=0.05cm-Schritten weiter in den Beton rein.
Also liegt C2 0.05cm unter der Oberfläche und so weiter.

Außerdem beschreibt L die Zeitschritte. L0 ist am Anfang und dort ist die Randbedingung C1=0.5. Dann geht es in 1-Tagesschritten weiter
( 1Tag=86400Sekunden). Also L1 ist ein Tag nach L=0.

Wie sich die Konzentrationen entwickeln und wie die Formeln dafür sind, sieht man in der PDF-Datei. Im Grunde muss man die Werte zum jetzigen Zeitschritt nehmen,in die Gleichung einsetzten und dann den nächsten Wert ausrechnen.
Allerdings habe ich überhaupt keine Ahnung wie ich das in Matlab programmieren soll :D

Außerdem gibt es für verschiedene Punkte auch verschiedene Formeln

Aus der PDF-Datei wird das hoffentlich ersichtlich.

Vielen Dank schon mal!!

Finite-Differenzen2.pdf
 Beschreibung:

Download
 Dateiname:  Finite-Differenzen2.pdf
 Dateigröße:  383.59 KB
 Heruntergeladen:  419 mal
Private Nachricht senden Benutzer-Profile anzeigen


laternenjoe
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 25.02.15
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 24.03.2015, 23:18     Titel:
  Antworten mit Zitat      
Hallo, das lässt sich mit den gegebenen Formeln gut hinschreiben.

Code:

C=zeros(5,6); % Array
C(:,1)=.5; % 1. Spalte = 0.5 -> Randbedingung
dt=86400;
dx=.05;
D1=10^-8;
D2=10^-9;
Ne=D1*dt/(dx^2);
Ke=D2*dt/(dx^2);
for L=1:4
for i=2:4
C(L+1,i)=Ne*C(L,i-1)+C(L,i)-2*Ne*C(L,i)+Ne*C(L,i+1);
% Ich hab jetzt auch i als Index genommen. Es gibt ja welche die finden das
% nicht toll, weil i eigentlich für imagin#re Zahl steht.
end
end
 

usw... müsste so glaube ich stimmen
Private Nachricht senden Benutzer-Profile anzeigen
 
crackheinzi.n
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2015, 23:44     Titel:
  Antworten mit Zitat      
Hey! Vielen Dank für den Ansatz. :)

Also das funktioniert bis C4 ganz gut und man kann ja weitere Zeitschritte einfügen, das ist ja kein Problem.

Nur für C5 müsste man jetzt noch einen anderen Ansatz findet wie in dem PDF beschrieben. Für C5 gilt ja eine andere Gleichung.

Ziel ist es auch die Konzentrationen bis zu einem Jahr zum beispiel darzustellen

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
laternenjoe
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 25.02.15
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 25.03.2015, 00:49     Titel:
  Antworten mit Zitat      
ja komm dann schreib ichs noch schnell zuende. Very Happy

Code:


n=6; % Anzahl der Spalten
C=zeros(5,n+1); % Array
C(:,1)=.5; % 1. Spalte = 0.5 -> Randbedingung
dt=86400;
dx=.05;
D1=10^-8;
D2=10^-9;
Ne=D1*dt/(dx^2);
Ke=D2*dt/(dx^2);
for L=1:4
for i=2:4
C(L+1,i)=Ne*C(L,i-1)+C(L,i)-2*Ne*C(L,i)+Ne*C(L,i+1);
% Ich hab jetzt auch i als Index genommen. Es gibt ja welche die finden das
% nicht toll, weil i eigentlich für imagin#re Zahl steht.
end
end
for L=1:4
C(L+1,5)=Ne*C(L,4)-Ne*C(L,5)-Ke*C(L,5)+Ke*C(L,6);
end
for L=1:4
for i=6:n
C(L+1,i)=Ke*C(L,i-1)+C(L,i)-2*Ke*C(L,i)+Ke*C(L,i+1);
end
end
 

Bei Gleichung ab C6 meinst du doch bestimmt Ke statt K oder?
Wenn man bei der Gleichung i=6 setzt, beziehst du dich mit dem Term Ke*C_L_i+1 ja auf das Element rechts von dem sechsten. Deshalb hab ich das Array ein größer gemacht, also 7 Spalten anstatt 6.
Private Nachricht senden Benutzer-Profile anzeigen
 
crackheinzi.n
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2015, 09:29     Titel:
  Antworten mit Zitat      
Achso das meintest du mit usw :D sorry ich bin ein ziemlicher Laie, wenn es um Matlab geht.
Aber vielen vielen Dank :)
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 - 2025 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.