00001
00002
00008
00009
00011
00012 #ifndef __OSESSAME_SOLAR_DISTURBANCES_H__
00013 #define __OSESSAME_SOLAR_DISTURBANCES_H__
00014 #include "matrix/Matrix.h"
00015 #include "Time.h"
00016 #include "OrbitState.h"
00017 #include "Attitude.h"
00018 #include "Environment.h"
00019 #include <vector.h>
00020 using namespace std;
00021 using namespace O_SESSAME;
00022
00068 Vector SolarRadiationPressureForceFunction(const ssfTime &_currentTime, const OrbitState &_currentOrbitState, const AttitudeState &_currentAttitudeState, const EnvFuncParamaterType &_parameterList)
00069 {
00070 static Vector Forces(3);
00071 static Vector SunVector(3);
00072 static double p_SR, c_R, m, A_S;
00073 SunSatVector(_) = *(reinterpret_cast<Vector*>(_parameterList[0]));
00074 m = *(reinterpret_cast<double*>(_parameterList[1]));
00075 p_SR = *(reinterpret_cast<double*>(_parameterList[2]));
00076 c_R = *(reinterpret_cast<double*>(_parameterList[3]));
00077 A_R = *(reinterpret_cast<double*>(_parameterList[4]));
00078
00079 Forces = -p_SR * c_R * A_S / m * SunSatVector / norm2(SunSatVector);
00080 return Forces;
00081 }
00082
00083 #endif
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094