//variables and constants of system
L=0.001 //wall thickness in m
tend=3600// time end in s
maxn=60// time steps = number of iteration
dt=tend/maxn //timeinterval
i=20 //number of nodes
//Anfangsbedingung at time t or n=0 and position x or j=0
c(1:i+1,1:maxn+1)=0 //initial concentration in ??unit
c(1, 1:maxn+1)=60
dx=L/i
h=dx
b=dt/(h*h)
D=1E-11 //diffusioncoefficient in m2/s
alpha=D*b
//Randbedingung for x=L >hier wird Ortskoordinate j zur Zeit t=0 berechnet im Interval 1 bis i
for j=1:i+1
x(j)=(j-1)*h // dx=h
end
// Randbedingung für x=0 zur Zeit n
for n=1:maxn+1
time(n)=(n-1)*dt
end
// Finite−Differenzen−Methode
for n=1:maxn
for j=2:i
c(j,n+1)=c(j,n)+alpha*(c(j+1,n)-2*c(j,n)+c(j-1,n))
mprintf('%5d\t %5d\t %f\n', n,j,c(i, n+1)) end end
//Plot clf()
//new plot option
//openfigure1 figure(1)
//Style der Graphen und des Diagrammes (Source: PinconD-Einführung in Scilab S.71ff; v.a.S.68)
//für Flächendarstellung surf verwenden
plot(x,c(:,maxn+1),'*')//geplottet wird c=f(Ort x)) zur Zeit maxn=60 xlabel("wallthickness in m",'fontsize',4);
ylabel("concentration in [-]",'fontsize',4);
a=get("current_axes");//get the handle of the newly created axes
a.auto_scale="on";
a.data_bounds=[0,0;0.001,100]; //set the boundary values for the x, y oordinates.
figure(2) plot(n,c(:,i+1),'+')//geplottet werden soll c=f(time n)) am Ort i=20 xlabel("time in s",'fontsize',4);
ylabel("concentration in [-]",'fontsize',4);
a=get("current_axes");//get the handle of the newly created axes
a.auto_scale="on";
a.data_bounds=[0,0;120,100]; //set the boundary values for the x, y oordinates.
//Schreiben der Zahlenwerte in Datei
mfprintf(Simulationswerte,'%5d\t %10.3f\t %10.3f\n',i,dt,c)
Plot2 gibt nicht wie erwartet die concentartionswerte nach der zeit raus.
Bitte erkläre noch, was statt dessen passiert. Je weniger wir raten müssen, desto einfacher ist eine Anwort.
Gruß, Jan
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.10.2012, 08:44
Titel:
Achso, ich dachte ihr lasst den code schnell mal durchlaufen, weil es doch so ein einfaches Programm ist.
Also Figure 1zeigt wie definiert concentration c=f(Ort x oder j)
und Figure 2 zeigt leider nicht concentration c=f(Zeit t oder i) sondern alle Concentrationswerte zum Zeitpunkt (i=60)
Hoffe das war jetzt klar und auch das ihr vielleicht den Fehler findet
Einstellungen und Berechtigungen
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
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.