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

Lösen einer PDE mit experimentellen Randbedingungen (2D-rot

 

Axel_S
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 07.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2017, 14:41     Titel: Lösen einer PDE mit experimentellen Randbedingungen (2D-rot
  Antworten mit Zitat      
Liebe Gemeinde,

ich habe einen Code, der soweit funktioniert, suche aber an einer bestimmten Stelle nach einer Verbesserung. Mit createpde löse ich eine transientes Wäremleitungsgleichung, welche experimentelle Daten als Randbedingung erhält. Ich habe nach den Anleitungen die pde auf 2D-rotationssymetrisch umgestellt. Hier erstmal er Code:
Code:
clearvars
close all
clc

%% material properties
k   = 44.5;   %[W/m.K]
rho = 7850; %[kg/m^3]
cp  = 475;  %[J/kg.K]
q_q = 0;    %[W/m^3]

%% create the model
model = createpde(1);

% For a rectangle the first numbers are always 3 4, the last 8 no. are the
% coordinates
geom  = decsg([3 4 0 0.025 0.025 0 0 0 0.02 0.02]');
% create the geometrie out of the edges
geometryFromEdges(model,geom);

%% specify the parameters for 2D-roational
f = @(region,state) q_q*region.x;
m = 0;
d = @(region,state) cp*rho*region.x;
c = @(region,state) k*region.x;
a = 0;

specifyCoefficients(model,'m',m,'d',d,'c',c,'a',a,'f',f);

%% Read the measurement data
temp = open('ExampleTprofile.mat');
T = temp.T; clear temp;
[R,TAU] = meshgrid(0:0.001:0.025,0:1:30);


%% Set the boundary conditions
% b3 = @(region,state) region.x*10+263;
b3 = @(region,state) interp2(R,TAU,T,region.x,state.time,'linear',263);
applyBoundaryCondition(model,'dirichlet','edge',[3],'h',1,'r',b3);

%% set the initial conditions
setInitialConditions(model,263);

%% create the mesh
m1 = generateMesh(model,'Hmax',0.0004,'Jiggle','on','JiggleIter',10);

%% set the timescale
tfinal = 29;
tstep  = 1;
tlist  = 0:tstep:tfinal;

%% solve the model
tic
result = solvepde(model,tlist);
toc


Das eingelesene Feld T wird hierbei zu Testzwecken erstmal wie folgt erzeugt:
Code:
r = 0:1:25;
t = 0:1:30;

T = zeros(length(t),length(r));
for i = 1:length(r)
    for j = 1:length(t)
        T(j,i) = 273 + 20*(erf((r(i)-t(j)*25/30))*0.5);
    end
end


Der "Performancekiller" ist dabei das interp2() beim setzen der Randbedingung. Wenn ich zwischen den beiden Randbedingungen b3 tausche habe ich einen Faktor in der Rechenzeit von etwa 100. Hat jemand eine bessere Lösung wie ich die diskreten Messpunkten als "Funktion" in die Randbedingung bekomme?

Viele Grüße und vielen Dank,
Axeö
Private Nachricht senden Benutzer-Profile anzeigen


Axel_S
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 07.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2017, 07:54     Titel: Nachtrag zur Rechenzeit
  Antworten mit Zitat      
Hier ein kurzer Nachtrag:
Die Rechenzeit ist doch nicht Faktor 100 sondern eher Faktor 5 - 10, wenn man die selben Werte an Rand vorgibt.

Code:
b3 = @(region,state) 273+20.*(erf((region.x.*1000-state.time.*25./30)).*0.5);


Mit dieser Vorgabe braucht die Rechnung mehr Zeit als mit der vorherigen RB

Code:
b3 = @(region,state) region.x*10+263;


welche aber nicht den Werten der interp2() entsprach. Aber bei Faktor 5 - 10 würde ich mich trotzdem über eine Verbesserung freuen.

Danke und Gruß,
Axel
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.