OrbitDynamics

所属分类:其他行业
开发工具:Visual C++
文件大小:4116KB
下载次数:181
上传日期:2012-03-10 23:17:18
上 传 者wuzg11
说明:  这是我在CSDN上找到的比较好的一个关于卫星轨道动力学的一个源码包,简单易懂,用c++写的,作者是韩冬,向他致敬! 非常好用的程序,学习卫星轨道动力学
(This is I find in good CSDN about the dynamics of the satellite s orbit a source packages, easy to understand and use c++ written, the writer is HanDong, paid tribute to him! The program is very nice, learning satellite orbit dynamics)

文件列表:
OrbitDynamics\bin\OrbitDyn_debug.dll (425984, 2010-03-20)
OrbitDynamics\bin\OrbitDyn_release.dll (225280, 2010-03-20)
OrbitDynamics\bin (0, 2010-07-13)
OrbitDynamics\include\BaseException.h (2136, 2010-03-20)
OrbitDynamics\include\CDatetime.h (5224, 2010-03-20)
OrbitDynamics\include\CEngine.h (1638, 2010-03-20)
OrbitDynamics\include\CentralBody.h (2529, 2010-03-20)
OrbitDynamics\include\Config.h (379, 2010-03-20)
OrbitDynamics\include\Constant.h (2357, 2010-03-20)
OrbitDynamics\include\Coordination.h (925, 2010-03-20)
OrbitDynamics\include\DE405.h (5190, 2010-03-20)
OrbitDynamics\include\Euler.h (1131, 2010-03-20)
OrbitDynamics\include\facility.h (1013, 2010-03-20)
OrbitDynamics\include\Kepler.h (2516, 2010-03-20)
OrbitDynamics\include\Maneuver.h (1320, 2010-03-20)
OrbitDynamics\include\matrixtcl.h (9070, 2010-03-20)
OrbitDynamics\include\Msise00.h (410, 2010-03-20)
OrbitDynamics\include\nrlmsise-00.h (6167, 2010-03-20)
OrbitDynamics\include\OrbitDyn.h (1512, 2010-03-20)
OrbitDynamics\include\PerfTimer.h (11263, 2010-03-20)
OrbitDynamics\include\Quaternion.h (2080, 2010-03-20)
OrbitDynamics\include\satellite.h (10926, 2010-03-20)
OrbitDynamics\include\StopCondition.h (537, 2010-03-20)
OrbitDynamics\include\Utility.h (6175, 2010-03-20)
OrbitDynamics\include\Vector.h (4483, 2010-03-20)
OrbitDynamics\include (0, 2010-07-13)
OrbitDynamics\src\BaseException.cpp (2003, 2010-03-20)
OrbitDynamics\src\CDateTime.cpp (9606, 2010-03-20)
OrbitDynamics\src\CEngine.cpp (4073, 2010-03-20)
OrbitDynamics\src\CentralBody.cpp (11548, 2010-03-20)
OrbitDynamics\src\DE405.cpp (14275, 2010-03-20)
OrbitDynamics\src\Euler.cpp (3421, 2010-03-20)
OrbitDynamics\src\Facility.cpp (1479, 2010-03-20)
OrbitDynamics\src\Kepler.cpp (6598, 2010-03-20)
OrbitDynamics\src\MatrixTCL.cpp (16902, 2010-03-20)
OrbitDynamics\src\Msise00.cpp (6522, 2010-03-20)
OrbitDynamics\src\Quaternion.cpp (3828, 2010-03-20)
OrbitDynamics\src\Satellite.cpp (30481, 2010-03-20)
OrbitDynamics\src\StopCondition.cpp (143, 2010-03-20)
OrbitDynamics\src\Utility.cpp (54174, 2010-03-20)
... ...

OrbitDyn V1.3.1(2009年11月27日) * 增加MATLAB中的mex文件,增加了生成mex文件的工程matlabmex和mexde405,其中matlabmex用于生成OrbitDyn.mexw32轨 道动力学外推程序,mexde405用于生成mexde405.mexw32行星历表程序,并增加了相应的.m辅助文件 * 更改OrbitDyn.h文件,仅支持VC2005以上版本的VC,不再支持VC6.0 OrbitDyn V1.3(2009年9月7日) * 去掉全局变量,改用静态指针生成地球、月球、DE405等全局对象 * 更改异常处理,利用统一定义的异常基类,每个类定义自己的异常类型 OrbitDyn V1.2(2008年12月28日) * 增加CRapidSatellite类。类重载了OneStep()函数,在其中每1800s更新岁差章动矩阵和日月位置,每50ms更新一次摄动加速度, 而在动力学方程DynFunction()直接使用计算好的摄动加速度。外推数值方法改为Gill4方法。从性能比较来看,原CSatellite外推 计算中最耗时的是地球非球形引力的计算,若将CRapidSatellite中的地球非球形引力计算放在动力学方程中,则计算耗时与 原CSatellite几乎一样。将地球非球形引力的计算放在OneStep()函数中,并每隔50ms才更新一次,则外推速度大大提高,可 用EarthFull中的相应测试函数测试速度提高的效果。 * CRapidSatellite只适用于外推步长很小(<50ms,如5ms),外推时间不长(几千秒),并对轨道外推精度要求不高的计算。 OrbitDyn V1.2(2008年7月25日) * 更改大气密度计算中使用的高度算法,使用大地高度代替r-Re OrbitDyn V1.1(2007年10月22日) * 更改卫星的姿态变量,将Cbi改为qbi和wbi * 删除CCentralBody中的StartEpoch变量 * 增加地球大气模型的选择,增加MSISE2000大气模型,并默认使用MSISE2000大气模型 * 更改PAirDrag()函数接口,增加时间和地固系位置两个变量,删除大气密度接口,由函数内部调用Earth.AtmosRuoH()计算大气密度 * CDateTime时间输出格式更改,增加BACCTIME格式 OrbitDyn V1.0(2007年8月29日) * 为了便于发布,将代码放到cpp文件中,h文件中只保留定义 * 更改目录格式,改为bin\data\doc\include\lib\m\src\test形式 * 将代码subfunction.cpp更名为utility.cpp便于索引函数 EarthFull v5.3.1 * 修正环境变量没找到时的bug,当没有找到OrbitDyn时,getenv返回NULL,这时std::string DataDir(Name)时就会出错 * 修正轨道高度小于0时,计算大气密度时的溢出bug,当高度小于0时抛出异常 * 增加Propagate2Epoch()函数 EarthFull v5.3 * 增加了外推到远地点函数Propagate2Apogee() * 卫星的时间不再是相对与Earth.StartEpoch的时间,而使用独立的历元Epoch,这样不同的卫星可以有不同的初始历元 * Earth.StartEpoch存在必要不大,但为了保持一定的继承性和考虑未来可能的需要,暂时保留 * 更新异常处理,采用throw exception方式 * 如果没有找到环境变量OrbitDyn,则使用当前目录下的data目录作为数据文件目录 EarthFull v5.2(2006年3月1日) * 调整了时间的计算,在计算格林威治恒星时的时候要考虑dUT1 * 增加了外推到近地点函数Propagate2Perigee() * 对轨道根数与直角坐标的计算中扩展到双曲线轨道 * 程序应用于环月轨道计算、中途修正等仿真,验证了程序计算法的正确性 EarthFull v5.1.1(2005年9月21日) * 修正地影判断中的错误,增加锥形地影、月影的计算 EarthFull v5.1(2005年9月15日) * 建立抽象基类CSatelliteBase作为所有卫星的基类,并以此建立环月卫星动力学 * 将头文件分开,以免编辑一个头文件导致所有cpp文件都需要重新编译 * 增加了CentralBody.h,Coordination.h,Facility.h,Kepler.h,Tank.h,Utility.h,Satellite.h头文件 * OrbitDyn.h只作为最后包含用 * 增加矩阵的内容,包括卫星的惯性姿态、岁差、章动等的矩阵运算,惯性系到地固系的转换改成矩阵运算 * 增加月心惯性系到月固系的转换函数,利用DE405中的月球天平动数据直接得到坐标系转换的三个欧拉角 * 增加工程OrbitDyn用作输出DLL,为此增加了头文件config.h定义dll输入输出 * 测试验证了勒让德球谐系数的计算,同Matlab和GSL相比在归一化的时候有不同之处。在此基础上整理了 * 引力场的计算公式和函数,重新推导和验算的引力场模型。通过环月轨道外推与STK比较,达到了较高的精度。 EarthFull v5.0 * 将轨道状态量(积分变量)改为惯性坐标 * 减少CSatellite中成员的个数 * 整理太阳、月球星历计算 * Keplerian更名为Kepler * Kepler()更名为KeplerFunc() * Kepler2()更名为KeplerFunc2() * 将轨道摄动加速度的计算改为带量纲的,输出加速度为km/s^2 其中地球引力加速度的计算使用原来的程序,只是在输入输出时进行量纲转化 EarthFull v4.2(2005年8月2日) 增加轨道机动,使用STL 在VC6.0中编译时有不同之处 EarthFull v4.1 将所有头文件合并成OrbitDyn.h,便于其他程序中引用 EarthFull v4.0(2004年11月22日) 大量更改... 存在问题:大气阻力的计算 EarthFull v3.0(2004年10月20日) 更改极移的数据读取方式 将日期时间、矢量运算分离成通用库文件 使程序结构更加合理 EarthFull v2.6(2004年5月26日) 增加Keplerian类 重载Satellite的operator = 增加是否自动保存轨道根数的选项 增加TVector和数组的相互转化 !更正RIC函数中的错误算法 !更正Cartesian_OrbitElements函数中rv的表达式错误 EarthFull v2.5(2004年5月14日) 经过54所项目的修改后返回的文件 EarthFull v2.3.4(2004年2月23日) 远程导引和伴飞使用单步调用 EarthFull v2.3.3(2004年1月15日) 远程导引基本成型了 伴飞还有部分问题 加入了cat写的C-W制导率和(视线制导率),完成***近阶段的子程序 使用单步调用,认为整个过程为控制过程,***运动相当于控制量为0, 记录当前控制量为maneuver1,下次控制量为maneuver2,输出步长为StepOut,积 分步长由计算决定(为加快计算速度,可以采用变步长积分)。需要设置远 程导引阶段标志,变轨时,根据阶段标志确定下两次得方法及控制量。 EarthFull v2.3.2(2004年1月6日) 伴飞算是基本OK了,还有些小bug,对大偏心率问题仍然不适用,回头再说了 伴飞中用到了C++的默认拷贝处理,这部分还需进一步探讨 远程导引也完成一大部分了,中间还需优化 EarthFull v2.3(2003年12月27日) 结构任然在调整中,累~~~ :( 改成了一个卫星类,应用轨道根数结构定义 两颗卫星的相对位置速度的计算,相对导航的计算 时间变量的变动 需要做的:“用函数来实现过程,用类来封装数据” EarthFull v2.2(2003年12月10日) 结构化改造: 定义了Vector 派生新类Facility 结构大调整,累死我了...... EarthFull v2.1(2003年11月13日) 错误提示改成弹出消息窗口 变轨时,对于过小的dv,就不再执行 修正摄动计算过程中时间计算的错误,完成精度分析 输出初始参数到InitConditions.txt EarthFull v2.0(2003年11月3日) 轨控策略的实现 查表求时间转换常数 改了摄动加速度函数名 改正了地球自转旋转矩阵种的计算错误 地球引力模型有:WGS-84、JGM-2、JGM-3、EGM-96 WGS-84模型较老,其地球半径、地球引力常数有不同之处 EarthFull v1.4(2003年10月7日) 实现有限推力变轨!包括: 1.FiniteManeuver按照速度变化量关机 2.tank的值在外推函数内更新,maneuver的值由实际外推的结果确定 3.改写Tank::dv_dt()函数 DateTime的实现分离出DateTime.cpp Tank和Maneuver的定义整合到Satellite中 改进DateTime、Satellite、XeSatellite的默认构造函数 EarthFull v1.3(2003年9月23日) 修正大气密度多项式插值中的错误 加入推力和贮箱参数计算,但没有调试完成,暂无变轨模块 EarthFull v1.2(2003年9月8日) 把结构体Time改成用类实现 完善封装,把RKF78集成到Satellite类中实现 把Satellite和XeSatellite的实现分成两个文件 大气密度由线性插值改为多项式插值 调用Matlab画图功能 EarthFull v1.1(2003年8月25日) 部分小修补 EarthFull v1.0(2003年7月23日) 这可是第一版啊:)好的开始是成功的一半 功能:外推计算

近期下载者

相关文件


收藏者