I am getting error while trying to generate data for qtot_eV through variation of "d".
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ambali Odebowale
le 29 Nov 2022
Modifié(e) : Ambali Odebowale
le 30 Nov 2022
Below is my code:
clear;
close all;
deld=(80E-9-10E-9)/100;
d=[10E-9:deld:80E-9]; %Distance between the emitter and TPV cell stacks
q=1.602E-19;
hbar=1.054571596E-34;
hbar_eV=hbar/q; %eV s
kb=1.3806503E-23;
kb_eV=kb/q;
h=2*pi*hbar;
h_eV=h/q; % eVs
T1=1500; %Emitter temperature, in K
T2=300; %TPV cell temperature, in K
c=2.9979E8; %speed of light
V=0;
%Wavelength over which the near field heat transfer spectrum is calculated.
lambda_min1=10000E-6;
lambda_max1=2.5E-6;
lambda_max2=1E-6;
%number frequency points in the two calculation ranges
res1=100; %between lambda_min1 and lambda_max1
res2=100; %between lambda_max1 and lambda_max2
%wavelength to frequency conversion, do not touch
w_min1=2*pi*3E8/lambda_min1;
w_max1=2*pi*3E8/lambda_max1;
del1=(w_max1-w_min1)/res1;
w_min2=w_max1+del1;
w_max2=2*pi*3E8/lambda_max2;
del2=(w_max2-w_min2)/res2;
w=[(w_min1:del1:w_max1) (w_min2:del2:w_max2)];
lambda=2*pi*c./w;
w_ev=w/1.5193E15;
qevan_p=zeros(1,length(w)); %vector initialization
qevan_s=zeros(1,length(w));
qprop_p=zeros(1,length(w));
qprop_s=zeros(1,length(w));
for a=1:length(w)
betaevanmax=10./d; %upper limit of the parallel wavevector for evanescent wave integration
betaevanmin=w(a)/c; %lower limit
qevan_p(a)=(Theta(w(a), T1,0)-Theta(w(a), T2, V))*1/pi^2*integral(@(beta)sevan_p(w(a),beta, d),betaevanmin,betaevanmax,'Reltol',1E-6,'AbsTol',1E-10); %default abstol = 1E-10 reltol 1E-6
qevan_s(a)=(Theta(w(a), T1,0)-Theta(w(a), T2, V))*1/pi^2*integral(@(beta)sevan_s(w(a),beta, d),betaevanmin,betaevanmax,'Reltol',1E-6,'AbsTol',1E-10);
qprop_p(a)=(Theta(w(a), T1,0)-Theta(w(a), T2, V)).*1/pi^2.*integral(@(beta)(sprop_p(w(a),beta,d)),0,w(a)/c);
qprop_s(a)=(Theta(w(a), T1,0)-Theta(w(a), T2, V)).*1/pi^2.*integral(@(beta)(sprop_s(w(a),beta,d)),0,w(a)/c);
a/length(w) % progress indicator
end
qtot=qevan_p+qevan_s+qprop_p+qprop_s; %total intensity spectum
qtot_eV=qtot*1.5193E15/10000; %in w/cm2/eV
The error is:
Error using integral (line 85)
A and B must be floating-point scalars.
Error in optimization (line 59)
qevan_p(a)=(Theta(w(a), T1,0)-Theta(w(a), T2, V))*1/pi^2*integral(@(beta)sevan_p(w(a),beta, d),betaevanmin,betaevanmax,'Reltol',1E-6,'AbsTol',1E-10); %default abstol = 1E-10
reltol 1E-6
0 commentaires
Réponse acceptée
VBBV
le 30 Nov 2022
As the error states, you need to provide scalar values for integral limits
betaevanmax=10./max(d); % use a scalar value for upper limit for integral function
3 commentaires
VBBV
le 30 Nov 2022
In that case you need to use another for loop to consider each value in vector d.
clear;
close all;
deld=(80E-9-10E-9)/100;
d=[10E-9:deld:80E-9]; %Distance between the emitter and TPV cell stacks
q=1.602E-19;
hbar=1.054571596E-34;
hbar_eV=hbar/q; %eV s
kb=1.3806503E-23;
kb_eV=kb/q;
h=2*pi*hbar;
h_eV=h/q; % eVs
T1=1500; %Emitter temperature, in K
T2=300; %TPV cell temperature, in K
c=2.9979E8; %speed of light
V=0;
%Wavelength over which the near field heat transfer spectrum is calculated.
lambda_min1=10000E-6;
lambda_max1=2.5E-6;
lambda_max2=1E-6;
%number frequency points in the two calculation ranges
res1=100; %between lambda_min1 and lambda_max1
res2=100; %between lambda_max1 and lambda_max2
%wavelength to frequency conversion, do not touch
w_min1=2*pi*3E8/lambda_min1;
w_max1=2*pi*3E8/lambda_max1;
del1=(w_max1-w_min1)/res1;
w_min2=w_max1+del1;
w_max2=2*pi*3E8/lambda_max2;
del2=(w_max2-w_min2)/res2;
w=[(w_min1:del1:w_max1) (w_min2:del2:w_max2)];
lambda=2*pi*c./w;
w_ev=w/1.5193E15;
qevan_p=zeros(length(w),length(d)); %vector initialization
qevan_s=zeros(length(w),length(d));
qprop_p=zeros(length(w),length(d));
qprop_s=zeros(length(w),length(d));
for k = 1:length(d)
for a=1:length(w)
betaevanmax=10/d(k); %upper limit of the parallel wavevector for evanescent wave integration
betaevanmin=w(a)/c; %lower limit
qevan_p(a,k)=(Theta(w(a), T1,0)-Theta(w(a), T2, V))*1/pi^2*integral(@(beta)sevan_p(w(a),beta, d(k)),betaevanmin,betaevanmax,'Reltol',1E-6,'AbsTol',1E-10); %default abstol = 1E-10 reltol 1E-6
qevan_s(a,k)=(Theta(w(a), T1,0)-Theta(w(a), T2, V))*1/pi^2*integral(@(beta)sevan_s(w(a),beta, d(k)),betaevanmin,betaevanmax,'Reltol',1E-6,'AbsTol',1E-10);
qprop_p(a,k)=(Theta(w(a), T1,0)-Theta(w(a), T2, V)).*1/pi^2.*integral(@(beta)(sprop_p(w(a),beta,d(k))),0,w(a)/c);
qprop_s(a,k)=(Theta(w(a), T1,0)-Theta(w(a), T2, V)).*1/pi^2.*integral(@(beta)(sprop_s(w(a),beta,d(k))),0,w(a)/c);
a/length(w) % progress indicator
end
end
qtot=qevan_p+qevan_s+qprop_p+qprop_s; %total intensity spectum
qtot_eV=qtot*1.5193E15/10000; %in w/cm2/eV
Also, matrix dimensions need to be changed as below
qevan_p=zeros(length(w),length(d)); %vector initialization
qevan_s=zeros(length(w),length(d));
qprop_p=zeros(length(w),length(d));
qprop_s=zeros(length(w),length(d));
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Partial Differential Equation Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!