CL_ev_events — Events computation
events = CL_ev_events(cjd_ini,mean_G50,simulation_period,param[,step[,prec[,compev[,att_plan[,propagation_type[,er[,mu[,zonals[,obla]]]]]]]]])
Satellite's positions are extrapolated with Lyddane,Eckstein-Hechler or a simple secular J2 propagator (depending on propagation_type).
Time step (step) and prec of events computation can be optionnaly given.
compev is a boolean vector of dimension 10 describing with events are to be computed.
Possible events are:
- compev(1): anc - ascending node crossing
- compev(2): stc - one or several solar time crossing
- compev(3): see - sun eclipse (penumbra) by earth
- compev(4): sem - sun eclipse (penumbra) by moon
- compev(5): gre - inertial direction (star, GRB, ...) above earth limb (with threshold)
- compev(6): grm - moon aproaching threshold cone around inertial direction (star, GRB, ...)
- compev(7): saa - area(for example, area of south atlantic anomaly) crossing
- compev(8): sgv - station-satellite geometric visibility
- compev(9): sav - station-antenna rf visibility
- compev(10): ssv - sensor visibility
Some events need parameters to be computed. For instance, to compute geometric visibility, location and properties of stations must be given.
param is an mlist containing the following :
- param.stc: solar time hours for wich crossing is computed (1xN)
- param.see: margin for sun eclipse by earth [rad]
- param.sem: margin for sun eclipse by moon [rad]
- param.sgv: contains stations (see oe_dsation)
- param.gre: threshold and inertial direction for 'gre' event computation [margin;right ascension of direction;declination of direction] RA and DEC in G50 (3x1) [rad]
- param.grm: threshold and inertial direction for 'grm' event computation [margin;right ascension of direction;declination of direction] RA and DEC in G50 (3x1) [rad]
- param.saa: polygon defining an area (for example, area of south atlantic anomaly), each point given by geocentric latitude and longitude [lon1 lon2 lon3 ...;lat1 lat2 lat3 ...]. The area can be convex or not. (2xN) [rad]
- param.svv: contains parameters for 'sav' and 'ssv' event computations because it contains sensors including antennas (see CL_ev_defSensor, give type 0 for antennas)
Note : You only need to fill the param fields that correspond to the events you are computing
att_plan is a tlist containing the satellite attitude planning. att_plan = tlist(['attPlan','t','quat','duration']). Field att_plan.t contains a vector of dates; att_plan.quat contains quaternions describing new attitude (see CL_rot_defQuat) for each date in att_plan.t; and att_plan.duration contains a vector defining duration of each attitude maneuver. Duration of maneuvers is only used to compute end of maneuver event date. There is no quaternion interpolation; so attitude changes instantly at dates given. Dates, quaternions, and durations must be of the same size. Moreover, when used, att_plan has to contain at least one quaternion with a date precedent or equal to the bulletin date.
Notes :
- due to the number of optional events, it is recomended to call this function using signed parameters. Example: events=CL_ev_events(ephe,1,params,compev=[%t;%f;%f;%f;%f;%t;%t;%t;%f;%f],step=120,prec=prec);
- some calculations use global constants that you can always modify if needed:
* sun eclipse by earth (compev.see) uses %CL_radiusSun(sun radius) and %rayatmo (atmosphere upper limit for penumbra);
* sun eclipse by moon (compev.sem) uses %CL_radiusSun, %leoLim (limit for sun parallax) and %CL_radiusMoon (moon radius);
* inertial direction (compev.gre) uses %rayatmo;
* sensor visibility (compev.ssv) uses %rayatmo.
Warning : computations for events 'gre' and 'grm' are made in CNES GAMMA50 frame.
initial date in CNES julian days [cjd] (1x1)
mean keplerian parameters in Gamma50 Veis frame [a e i w omega M]' [m,rad] (6x1)
time in days where to search events from start date in bulletin [days]
necessary parameters for some events computations
(optional) step of propagation [seconds] (default is 60 seconds)
(optional) prec in search of start and end dates of events [seconds] (default is 1 second)
(optional) events to compute [booleans] (10x1) (default is all true)
(optional but necessary for events involving attitude ; for instance, RF visibility) tlist containing attitude (dates, quaternions in G50 and duration) [dates in cnes julian days + ut/24 and duration in seconds] (default is no attitude)
(optional) 'j2' for secular J2, 'lyd' for lyddane or 'eh' for Eckstein Hechler (default is lyddane) (1x1)
(optional) Earth semi-major axis (default is earth equatorial radius %CL_eqRad) [m] (1x1)
(optional) geocentric gravitational constant [m^3/s^2] (default value is %CL_mu)
(optional) vector of zonals coefficients J1 to Jn (troncated to J5) to be used (default is %CL_j1jn(1:5)) (1 x N)
(optional) Earth oblateness, setting it to 0 will result in a faster computation (default is earth oblateness %CL_obla) (1x1)
computed events (position in GAMMA50)(see CL_ev_defEvent)
// Find geometric visibility from Kourou for 10 days cjd_ini = 21900; mean_G50 = [ 6978000 1.e-6 CL_deg2rad(30) 0 0 0]'; //G50 kourou = CL_ev_defStation('kourou','kru',CL_deg2rad(10),CL_deg2rad(307.2),CL_deg2rad(5.25),112); param = mlist(['param','sgv'],kourou); compev = zeros(1,10); //all events set to 0 (%f) compev(8) = %t; //set sgv event to true geom_visi = CL_ev_events(cjd_ini,mean_G50,10,param,compev=compev); //compute visibility //ups! I forgot Maldini station! maldini = CL_ev_defStation('maldini','mal',CL_deg2rad(10),CL_deg2rad(40.1945),CL_deg2rad(-2.99),0); param.sgv = [kourou maldini]; geom_visi = CL_ev_events(cjd_ini,mean_G50,10,param,compev=compev); //compute visibility //now I only want visibility from maldini station maldini_visibility = geom_visi(find(abs(geom_visi.code)==100.2)); //now i want only events in first 5 days fiveDays_visi = geom_visi(find(geom_visi.date<=bulletin(1)+5)); // Find eclipses of sun or moon in 2 months (60 days) cjd_ini = 21900; mean_G50 = [6978000 1.e-6 CL_deg2rad(30) 0 0 0]'; //G50 compev = zeros(1,10); //all events set to 0 (%f) compev([3 4]) = %t; //set eclipse events to true param = mlist(['param','see','sem'],0,0); eclipses = CL_ev_events(cjd_ini,mean_G50,60,param,compev=compev,step=5*60); //compute eclipse events (step of 5 minutes instead of 60 seconds) REMARK: for a complete example computing all events, see 'CelestLab > Demos > ORBITAL_EVENTS > events'