0001 function [el az raInt decInt] = calcSunLoc(d)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 if(isstruct(d))
0014 lat =d.antenna0.tracker.siteActual(1,2);
0015 else
0016 lat = 37;
0017 end
0018
0019 if(lat > 0 )
0020 sun = load('constants/sun_n.ephem');
0021 else
0022 sun = load('constants/sun_s.ephem');
0023 end
0024
0025 mjd = sun(:,1) - 2400000.5;
0026
0027 ra = sun(:,2) + sun(:,3)/60 + sun(:,4)/3600;
0028 ra = ra*15;
0029
0030 ind = sun(:,5)<0;
0031 dec(ind) = sun(ind,5) + sun(ind,6)/60 + sun(ind,7)/3600;
0032 dec(~ind) = -(-sun(~ind,5) + sun(~ind,6)/60 + sun(~ind,7)/3600);
0033
0034
0035 raInt = interp1(mjd, ra, d.antenna0.receiver.utc, 'spline');
0036 decInt = interp1(mjd, dec, d.antenna0.receiver.utc, 'spline');
0037
0038
0039 if(length(d.antenna0.tracker.utc)~=length(unique(d.antenna0.tracker.utc)))
0040 indBadTime = zeros(size(d.antenna0.tracker.utc));
0041 aa = sort(d.antenna0.tracker.utc);
0042 f = find(diff(aa)==0);
0043 for m=1:length(f)
0044 ff = find(d.antenna0.tracker.utc == aa(f(m)));
0045 indBadTime(ff(2:length(ff))) = 1;
0046 end
0047
0048 trackutc = d.antenna0.tracker.utc(~indBadTime);
0049 tracklst = d.antenna0.tracker.lst(~indBadTime);
0050 else
0051 trackutc = d.antenna0.tracker.utc;
0052 tracklst = d.antenna0.tracker.lst;
0053 end
0054
0055 lstInt = interp1(trackutc, tracklst, ...
0056 d.antenna0.receiver.utc);
0057
0058
0059 [az,el] = radec2azel(raInt, decInt, lstInt);
0060
0061 f = find(isnan(el));
0062 el(f) = 90;
0063 return;
0064