Name

CL_ev_events — Events computation

Calling Sequence

   events = CL_ev_events(cjd_ini,mean_G50,simulation_period,param[,step[,prec[,compev[,att_plan[,propagation_type[,er[,mu[,zonals[,obla]]]]]]]]])
   
   

Description

  • This function computes different types of events in the period of time simulation_period.

    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.

  • Last update : 21/10/2009

Parameters

cjd_ini:

initial date in CNES julian days [cjd] (1x1)

mean_G50:

mean keplerian parameters in Gamma50 Veis frame [a e i w omega M]' [m,rad] (6x1)

simulation_period:

time in days where to search events from start date in bulletin [days]

param:

necessary parameters for some events computations

step:

(optional) step of propagation [seconds] (default is 60 seconds)

prec:

(optional) prec in search of start and end dates of events [seconds] (default is 1 second)

compev:

(optional) events to compute [booleans] (10x1) (default is all true)

att_plan:

(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)

propagation_type:

(optional) 'j2' for secular J2, 'lyd' for lyddane or 'eh' for Eckstein Hechler (default is lyddane) (1x1)

er :

(optional) Earth semi-major axis (default is earth equatorial radius %CL_eqRad) [m] (1x1)

mu:

(optional) geocentric gravitational constant [m^3/s^2] (default value is %CL_mu)

zonals:

(optional) vector of zonals coefficients J1 to Jn (troncated to J5) to be used (default is %CL_j1jn(1:5)) (1 x N)

obla :

(optional) Earth oblateness, setting it to 0 will result in a faster computation (default is earth oblateness %CL_obla) (1x1)

events:

computed events (position in GAMMA50)(see CL_ev_defEvent)

Authors

CNES - DCT/SB

See also

CL_gm_visibility, CL_ev_defSensor, CL_ev_defEvent, CL_ev_defStation, CL_rot_defQuat

Examples

// 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'