[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[TRNSYS-users] W-editor Runtine Error
Hello,
We're student and we're working on a project on TRNSys. We're are buiding
a program on W-editor that can be used on TRNSys's W-editor boxes.
We already have a working program on Matlab. We've adapted this program to
feet the W-editor language, but we always get a Runtime Error, without
more precision.
The program always us to calculate the evolution of the temperature with a
time dependence into a wall.
Is W-editor able to run a time dependent program?
When we'll get the program to work on W-editor, we want to put all entries
in TRNSys inputs and the solution matrix into an output.
So I attach to this mail the Matlab and the W-editor programs.
Thanks in advance
Best regards
Denis GARASA
%programme de bilan enthalpique sur un composant discrétisé en 4 noeuds
%interne (dont deux de surface).
%Les conditions limites sont définies dans les milieux 1 et 2;
%
%Le schéma equivalent est le suivant
%Apports radiatifs (IR1) | | IR2
%Echanges radiatifs (Tr1 et hr1) | T1-----T2-----T3-----T4 | Tr2 et hr2
%Ecanges convectifs (Te1 et hc1) | | Te2 et hc2
%Définition des conditions limites
%-------------milieu 1
IR1 = 0; % apports radiatifs (W/m²)
Tr1 = 30+273; % Température equivalente pour les échanges radiatifs (°C)
Te1 = 30+273; % Température équivalente pour les échange convectifs (°C)
hc1 = 20; % Coefficient d'échange convectif coté mimieu 1 (W/m²/K)
%-------------milieu 2
IR2 = 0; % apports radiatifs (W/m²)
Tr2 = 10+273; % Température equivalente pour les échanges radiatifs (°C)
Te2 = 10+273; % Température équivalente pour les échange convectifs (°C)
hc2 = 20; % Coefficient d'échange convectif coté mimieu 2 (W/m²/K)
%Définition des caractéristiques radiatives
eps1 = 0.9; % Emissivité sur la surface coté milieu 1
eps2 = 0.9; % Emissivité sur la surface coté milieu 2
alpha1 = 0.5 ; % Absorptivité du matériau coté milieu 1
alpha2 = 0.5 ; % Absorptivité du matériau coté milieu 2
tho1 = 0.5 ; % Transmitivité du matériau coté milieu 1
tho2 = 0.5 ; % Transmitivité du matériau coté milieu 2
%Définition des caractiristiques du matériau
lambda = 0.201; % Conductivité thermique (W/m/K)
rho = 400; % densité (kg/m3)
Cp = 1400; % Capacité calorifique (J/kg/K)
ep = 5E-2; % Epaisseur du matériau (m)
%Définition des conditions initiales
Tinit = 0; % Température de condition initale (°C)
%definition des cond et capacité en chaque noeud
cond = lambda / ep * 3;
capa = rho * Cp * ep / 3;
capa2 = capa / 2;
condneg = -1 * cond; %matrice négative des conductances
boltz = 5.67e-8;
% Temps final physique
tempsfinal = 1 * 3600;
% Données numériques
npas = 1;
NNpas = 1E+3;
dt = tempsfinal / npas;
conv = matrix(4, 1, 0);
% Initialisation du tableau de sauvegarde
Tsauv = matrix( 4, 1, 1) * 273;
Tnv = matrix( 4, npas, 1) * Tinit + 273;
% Choix de la progression
% Geométrique = 0;
% Arithmétique != 0;
rgeo = 2; % Raison de la progression géométrique
rarithm = 1; % Raison de la progression arithmétique
progression = 1;
%programme de convergence des températures
convergence = 1e4;
while convergence > 1e-3
%while npas < NNpas
% Sélection de la progression
if ( progression )
% Incrémentation du nombre de pas de temps
npas = npas + rarithm;
else
npas = npas * rgeo;
end
% Calcul de la valeur du pas de temps
dt = tempsfinal / ( npas - 1 );
% Initialisation
Tnv = matrix( 4, npas, 1) * Tinit + 273;
for n = 2 : 1 : npas
%calcul des coefficients d'échange radiatifs
hr1 = eps1 * boltz * ( Te1^2 + Tnv(1,n-1)^2 ) * ( Te1 + Tnv(1,n-1) );
hr2 = eps2*boltz*(Te2^2+Tnv(4,n-1)^2)*(Te2+Tnv(4,n-1));
%definition de la matrice des capacités
MAT(1,1) = capa2 / dt + hr1 + hc1 + cond;
MAT(1,2) = condneg;
MAT(1,3) = 0;
MAT(1,4) = 0;
MAT(2,1) = condneg;
MAT(2,2) = capa / dt + 2 * cond;
MAT(2,3) = condneg;
MAT(2,4) = 0;
MAT(3,1) = 0;
MAT(3,2) = condneg;
MAT(3,3) = capa / dt + 2 * cond;
MAT(3,4) = condneg;
MAT(4,1) = 0;
MAT(4,2) = 0;
MAT(4,3) = condneg;
MAT(4,4) = capa2/ dt + cond + hr2 + hc2;
% Définition du veteur résultat
SOL(1) = capa2 / dt * Tnv(1,n-1) + hc1 * Te1 + hr1 * Tr1 + alpha1 * IR1;
SOL(2) = capa/dt * Tnv(2,n-1);
SOL(3) = capa/dt * Tnv(3,n-1);
SOL(4) = capa2/dt*Tnv(4,n-1)+hc2*Te2+hr2*Tr2+alpha2*IR2;
% Résolution du système
IMAT = inv(MAT);
SOLt = [SOL(1),SOL(2),SOL(3),SOL(4)];
for k = 1 : 1 : 4;
Tnv(k,n) = IMAT(k,1) * SOLt(1) + IMAT(k,2) * SOLt(2) + IMAT(k,3) * SOLt(3) + IMAT(k,4) * SOLt(4);
end
end
% Calcul de la norme infinie
for k = 1 : 1 : 4;
conv(k) = Tnv(k,npas) - Tsauv(k);
end
% Calcul du carré de la norme euclidienne d'ordre 2
convergence = 0;
for n = 1 : 1 : 4
convergence = convergence + conv(n)^2;
end
% Sauvegarde du champ de température
for k = 1 : 1 : 4;
Tsauv(k) = Tnv(k,npas);
end
end
%programme de bilan enthalpique sur un composant discrétisé en 4 noeuds
%interne (dont deux de surface).
%Les conditions limites sont définies dans les milieux 1 et 2;
%
%Le schéma equivalent est le suivant
clear all;
clc;
tic;
%Apports radiatifs (IR1) | | IR2
%Echanges radiatifs (Tr1 et hr1) | T1-----T2-----T3-----T4 | Tr2 et hr2
%Ecanges convectifs (Te1 et hc1) | | Te2 et hc2
%Définition des conditions limites
%-------------milieu 1
IR1 = 0; % apports radiatifs (W/m²)
Tr1 = 30+273; % Température equivalente pour les échanges radiatifs (°C)
Te1 = 30+273; % Température équivalente pour les échange convectifs (°C)
hc1 = 20; % Coefficient d'échange convectif coté mimieu 1 (W/m²/K)
%-------------milieu 2
IR2 = 0; % apports radiatifs (W/m²)
Tr2 = 10+273; % Température equivalente pour les échanges radiatifs (°C)
Te2 = 10+273; % Température équivalente pour les échange convectifs (°C)
hc2 = 20; % Coefficient d'échange convectif coté mimieu 2 (W/m²/K)
%Définition des caractéristiques radiatives
eps1 = .9; % Emissivité sur la surface coté milieu 1
eps2 = .9; % Emissivité sur la surface coté milieu 2
alpha1 = .5 ; % Absorptivité du matériau coté milieu 1
alpha2 = .5 ; % Absorptivité du matériau coté milieu 2
tho1 = .5 ; % Transmitivité du matériau coté milieu 1
tho2 = .5 ; % Transmitivité du matériau coté milieu 2
%Définition des caractiristiques du matériau
lambda = 0.201; % Conductivité thermique (W/m/K)
rho = 400; % densité (kg/m3)
Cp = 1400; % Capacité calorifique (J/kg/K)
ep = 5E-2; % Epaisseur du matériau (m)
%Définition des conditions initiales
Tinit = 0; % Température de condition initale (°C)
%definition des cond et capacité en chaque noeud
cond = lambda / ep * 3;
capa = rho * Cp * ep / 3;
capa2 = capa / 2;
condneg = -1 * cond; %matrice négative des conductances
boltz = 5.67e-8;
% Temps final physique
tempsfinal = 1 * 3600;
% Données numériques
npas = 1;
NNpas = 1E+3;
dt = tempsfinal / npas;
conv = zeros( 4, 1 );
% Initialisation du tableau de sauvegarde
T = ones( 4, 1) * inf;
Tnv = ones( 4, npas ) * Tinit + 273;
% Choix de la progression
% Geométrique = 0;
% Arithmétique != 0;
rgeo = 2; % Raison de la progression géométrique
rarithm = 1; % Raison de la progression arithmétique
progression = 1;
%programme de convergence des températures
convergence = inf;
while ( ( convergence > 1E-3 ) && ( npas < NNpas ) )
% Sélection de la progression
if ( progression )
% Incrémentation du nombre de pas de temps
npas = npas + rarithm;
else
npas = npas * rgeo;
end
% Calcul de la valeur du pas de temps
dt = tempsfinal / ( npas - 1 );
% Initialisation
Tnv = ones( 4, npas ) * Tinit + 273;
for n = 2 : 1 : npas
%calcul des coefficients d'échange radiatifs
hr1 = eps1 * boltz * ( Te1^2 + Tnv(1,n-1)^2 ) * ( Te1 + Tnv(1,n-1) );
hr2 = eps2 * boltz * ( Te2^2 + Tnv(4,n-1)^2 ) * ( Te2 + Tnv(4,n-1) );
%definition de la matrice des capacités
MAT(1,1) = capa2 / dt + hr1 + hc1 + cond;
MAT(1,2) = condneg;
MAT(1,3) = 0;
MAT(1,4) = 0;
MAT(2,1) = condneg;
MAT(2,2) = capa / dt + 2 * cond;
MAT(2,3) = condneg;
MAT(2,4) = 0;
MAT(3,1) = 0;
MAT(3,2) = condneg;
MAT(3,3) = capa / dt + 2 * cond;
MAT(3,4) = condneg;
MAT(4,1) = 0;
MAT(4,2) = 0;
MAT(4,3) = condneg;
MAT(4,4) = capa2/ dt + cond + hr2 + hc2;
% Définition du veteur résultat
SOL(1) = capa2 / dt * Tnv(1,n-1) + hc1 * Te1 + hr1 * Tr1 + alpha1 * IR1;
SOL(2) = capa / dt * Tnv(2,n-1);
SOL(3) = capa / dt * Tnv(3,n-1);
SOL(4) = capa2 / dt* Tnv(4,n-1) + hc2 * Te2 + hr2 * Tr2 + alpha2 * IR2;
% Résolution du système
IMAT = inv(MAT);
SOLt = [SOL(1),SOL(2),SOL(3),SOL(4)];
for k = 1 : 1 : 4;
Tnv(k,n) = IMAT(k,1) * SOLt(1) + IMAT(k,2) * SOLt(2) + IMAT(k,3) * SOLt(3) + IMAT(k,4) * SOLt(4);
end
end
% Calcul de la norme infinie
for k = 1 : 1 : 4;
conv(k) = Tnv(k,npas) - T(k);
end
% Calcul du carré de la norme euclidienne d'ordre 2
convergence = 0.;
for n = 1 : 1 : 4
convergence = convergence + conv(n)^2;
end
% Sauvegarde du champ de température
for k = 1 : 1 : 4;
T(k) = Tnv(k,npas);
end
end
duree = toc;
fprintf( '\n\n Temps de calcul : %.2E s', duree );
% Abscisse de traçage des graphiques
temps = linspace( 0, tempsfinal, npas );
% Ordonnées initiales
VTe1 = ones(1,length(Tnv(4,:))).*Te1-273;
VTe2 = ones(1,length(Tnv(4,:))).*Te2-273;
Tnv = Tnv - 273;
figure(1);
clf;
hold on;
plot( temps, Tnv(1,:),'g', temps,Tnv(2,:),'y',temps,Tnv(3,:),'b',temps,Tnv(4,:),'r')
plot( temps, VTe1, 'k','linewidth', 2 );
plot( temps, VTe2, 'k', 'linewidth', 2 );
grid on;
box on;
xlabel('Temps (h)');
ylabel('Température (°C)');
legend('Tsurf1','Tint12','Tint21','Tsurf2','Tmilieu1','Tmilieu2', 'location', 'best' );
axis( [ 0 tempsfinal min(Tinit,5) max(Te1,Te2)-273+5 ] );
fprintf( '\n\n\t\tFIN\n\n' );