# This model is focused around the evaluation of an arbitrary Fourier series to # recover Solar Radiation Pressure accelerations, with specialized options for # handling satellites in eclipse. # # Any line starting with a "#" is ignored and considered a comment. # E.g. This is a comment line. # # Comments may also occur at the end of lines, from the first occurrence of a "#" # character onwards. # # Blank lines are ignored. # # The model has 2 main types of input: # # 1) force coefficients # 2) special variables # # (1) Each entry in a "table" of coefficients should have the following format: # # Type ModeNumber Evaluate Direction Value(s) [NoInflate] [NoSunScale] # # "Type" can be: # Constant # a bias used *only* in umbra [full shadow] - if specified, this will # be the *only* force applied from this model during umbra. It will # not be scaled for distance and all partials will be zeroed to avoid # these values from polluting the "real" e.g. solar scale estimates. # This parameter is not expected to get much use, but is provided to # allow some GIPSY models to be implemented which have originated # from third party sources. Its "Evaluate" parameter *must* be V. The # ModeNumber parameter is ignored. # Sine # sine coefficient, as a function of Earth-Satellite-Sun angle # Cosine # cosine coefficient, as a function of Earth-Satellite-Sun angle # # "Mode" is the mode number (n), or harmonic. For example, a Sine value will be # evaluated as: # sin( n * angle ) # # "Evaluate" indicates how the coefficient should be evaluated, and can take # one of several values, including: # V # interpret the value provided as a coefficient directly # P+ # interpret the values as polynomial coefficients used to recover the # Fourier coefficient for positive beta angles (B), i.e.: # coeff = (a0 + a1B + a2B^2 ... + anB^n) # where the independent argument of the polynomial (B) is expected # to be in degrees # P- # interpret the values as polynomial coefficients used to recover the # Fourier coefficient for negative beta angles (B), i.e.: # coeff = (a0 + a1B + a2B^2 ... + anB^n) # where the independent argument of the polynomial (B) is expected # to be in degrees # BK # interpret the values as coefficients of the beta-angle (B) dependent # equation 4 from Bar-Sever & Kuang (2004), "IPN Progress Report 42-159": # coeff = C + DsinB + E/sinB + FcosB # # "Direction" is used to indicate the direction along which the acceleration # resulting from the coefficient acts. It can be *one* of X, Y, Z or, if and only # if Evaluate == V, any combination thereof, e.g. XYZ or YZ. These directions # are assumed to apply to the default spacecraft body-fixed attitude specified # # "Value(s)" is either the coefficient itself, or a series of further coefficients # used to instantaneously evaluate the Fourier coefficient's value, expressed # in Newtons (kg.m/s^2). # # "NoInflate" is an optional keyword that indicates a certain coefficient # or coefficients should not be scaled by an axis-independent factor, i.e. # an "overall" solar scale; this may affect both the computed acceleration # and its partials. If more than one direction is supplied and "NoInflate" # is specified, none of the coefficients on that line will be scaled. This # keyword does not affect axis-dependent scalars, e.g. solar scale X. By # default, all coefficients will be inflated. # # "NoSunScale" is an optional keyword that indicates a certain coefficient # or coefficients should not be scaled by the shadow factor *nor* the inverse # distance between the Sun and the spacecraft. # # (2) Special variables typically separate coefficient tables and values used in # different regimes. Coefficients specified prior to any special variables # will be used by default. Several special variables are available for use: # # FixBeta # When computing beta-angle-dependent coefficients (e.g. P+, P-, BK), the # beta angle is set to the value of FixBeta (original sign preserved) if # |beta| < FixBeta. If not specified, a default value of 14.5 degrees is # used. # # EclipseBeta # The absolute beta angle value in degrees below which the model considers # itself to be in eclipse. ***Any coefficients defined after EclipseBeta # are interpreted as applying solely to the EclipseBeta regime. If no # coefficients are found after EclipseBeta, the prior standard coefficients # (which *must* be provided) are used. # # SplitAt # If the absolute value of the satellite's mis-pointing (the angle between # its solar panel normal and the Sun-satellite vector) is greater than # SplitAt , then only SplitAt is used to compute the # acceleration. The split acceleration is taken to result from two forces: # 1) a bus force with magnitude (1-arrayFraction)*value, which acts # wholly along the direction from the spacecraft to the Sun. # 2) a solar array force with magnitude arrayFraction*value, which acts # mostly along the solar panel normal, but also along the direction # from the spacecraft to the Sun. # [REQUIRED] # The value of the coefficient in Newtons (kg.m/s^2) that best # represents the force in the Satellite-Sun direction (default = 0.0, # i.e. *NO* SRP acceleration). This is typically set to the first # (mode=1) cosine harmonic in Z from the coefficients used when the # absolute beta angle value is below EclipseBeta. # [OPTIONAL, default = 1.0] # the absolute SplitAt angle, in degrees # [OPTIONAL, default = 0.9] # The fraction of believed to result from the solar array. # The bus is responsible for (1.0 - arrayFraction). Must be <= 1.0 # [OPTIONAL, default = 0.3] # the proportion of radiation incident on the solar array that is # reflected diffusely # [OPTIONAL, default = 0.25] # the proportion of radiation incident on the solar array that is # reflected specularly # In order to be physically meaningful, diffusivity + specularity + absorptivity # for the array should = 1. Therefore, diffusivity + specularity should # definitely be <= 1. However, sometimes non-physical values are required # for various reasons, so we do not perform any bounds checking on these values. # # SplitAtEcl # For parameter definition, see "SplitAt" above. This model is used if the # "EclipseBeta" criterion is defined *and* met, *and* the absolute value # of the satellite's mis-pointing (the angle between its solar panel normal # and the Sun-satellite vector) is greater than SplitAtEcl . If # "EclipseBeta" and "SplitAt" were input, but "SplitAtEcl" was not, then # "SplitAtEcl" will be set equal to "SplitAt". #