Home > constants > calcSunLoc.m

calcSunLoc

PURPOSE ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SYNOPSIS ^

function [el az raInt decInt] = calcSunLoc(d)

DESCRIPTION ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  function el = calcSunLoc(d)


  calculates the elevation of the sun

  sjcm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [el az raInt decInt] = calcSunLoc(d)
0002 
0003 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0004 %
0005 %  function el = calcSunLoc(d)
0006 %
0007 %
0008 %  calculates the elevation of the sun
0009 %
0010 %  sjcm
0011 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0012 
0013 if(isstruct(d))
0014   lat  =d.antenna0.tracker.siteActual(1,2);
0015 else
0016   lat = 37;  %northern system
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; % in degrees
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);  % in degrees
0033 
0034 
0035 raInt  = interp1(mjd, ra, d.antenna0.receiver.utc, 'spline');
0036 decInt = interp1(mjd, dec, d.antenna0.receiver.utc, 'spline');
0037 
0038 % make sure we don't have repeated data in tracker.utc and tracker.lst
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 % from RA/DEC to az/el
0059 [az,el] = radec2azel(raInt, decInt, lstInt);
0060 
0061 f = find(isnan(el));
0062 el(f) = 90;
0063 return;
0064

Generated on Sun 14-Jun-2015 17:12:45 by m2html © 2005