⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppf_lib_valid.c

📁 read envisat and analyis sar data from NASA
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include <math.h>#include <string.h>#include <ppf_lib.h>/* This version number is the SCCS version number valid only for internal configuration and control. *//* The oficial version number can be found in the History box below. */static char PPF_LIB_VALID_C [] = "@(#)ppf_lib_valid.c	1.12     00/06/28";/***************************************************************************************** * * Copyright    : DEIMOS Space S.L. * Project      : REMASE * * Test level   : VALIDATION * * Module       : ppf_lib_valid.c * Purpose      : It runs validation tests of PPF_LIB * * History      +------------------------------------------------------------------------+ *              | Version | Date     | Name         | Change                             | *              |---------|----------|--------------|------------------------------------| *              |    4.1  | 15/01/97 | GMV, S.A.    | First release                      | *              |    4.2  | 30/04/97 | GMV, S.A.    | Second release                     | *              |    4.3  | 18/05/98 | GMV, S.A.    | Third release                      | *              |    4.4  | 13/10/98 | GMV, S.A.    | Fourth release                     | *              |    4.5  | 25/05/99 | GMV, S.A.    | Fifth release                      | *              |    4.6  | 14/04/00 | GMV, S.A.    | Sixth release                      | *              |    4.7  | 22/06/01 | GMV, S.A.    | Seventh release                    | *              |    4.8  | 31/07/01 | GMV, S.A.    | Eigth release                      | *              |    4.9  | 22/10/01 | DEIMOS Space | Ninth release                      | *              |    5.0  | 18/01/02 | DEIMOS Space | Tenth release                      | *              |    5.1  | 25/11/02 | DEIMOS Space | Eleventh release                   | *              |    5.2  | 26/05/03 | DEIMOS Space | Twelfth release                    | *              |    5.3  | 13/12/04 | DEIMOS Space | Thirteenth release                 | *              |   5.3.1 | 15/02/05 | DEIMOS Space | Forteenth release                  | *              |    5.4  | 17/05/05 | DEIMOS Space | Fifteenth release                  | *              +------------------------------------------------------------------------+ * ****************************************************************************************//* Macro definition *//* ---------------- */#define MAX_CONDITION                   1000    /* Maximum number of checks per test case */#define START_VALIDATION                int main(int argc, char *argv[]){ \                                        double di,th,ta,tb,sinta,costa,sintb,costb;\                                        double di_l,di_r,th_l,th_r; \                                        int i,j; \                                        int checks; \                                        PL_Boolean condition[MAX_CONDITION]; \                                        PL_Boolean result;#define START_CHECK(msg)                printf(" *** %s\n",msg); \                                        checks = 0;#define END_CHECK                       result = PL_TRUE; \                                        for (i = 0 ; i < checks ; i++) \                                          { \                                          if (condition[i] == PL_FALSE) \                                            { \                                            result = PL_FALSE; \                                            break; \                                            } \                                          } \                                        if (result == PL_TRUE) \                                          { \                                          printf(" *** RESULT = PASS ***\n\n");\                                          } \                                        else \                                          { \                                          printf(" *** RESULT = FAIL ***\n\n");\                                          }#define CHECK_STATUS(msg,stat)          if (stat < PL_OK ) { \                                          condition[checks] = PL_FALSE; \                                          printf(" ...\t%s (PL_FALSE)\n",msg); \                                        }else{ \                                          condition[checks] = PL_TRUE; \                                          printf(" ...\t%s (PL_TRUE)\n",msg); \                                        } \                                        checks++;#define CHECK_PAR(msg,p,p0,dp)          if((di=fabs(p-p0)) <= (th=dp)){ \                                          condition[checks] = PL_TRUE; \                                          printf(" ...\t%s (PL_TRUE)\n",msg); \                                        }else{ \                                          condition[checks] = PL_FALSE; \                                          printf(" ...\t%s (PL_FALSE)\n",msg); \                                        } \                                        printf("\t\t Threshold  : %g\n",th); \                                        printf("\t\t Difference : %g\n",di); \                                        checks++;#define CHECK_VEC(msg,v,v0,im,iM,dp)    for(i=im;i<=iM;++i){ \                                          CHECK_PAR(msg,v[i],v0[i],dp); \                                        }#define END_VALIDATION                  return(0); \                                        }/* Nominal validation values *//* ------------------------- */double mjdr[] = { -730.0 , 0.3};long irep = 35;long icyc = 501;double rlong = -47.2941;double ascmlst = 22.0;long iorb0 = 0;long iorb = 43;double mjdp[] = { -2456.0 , 0.3 };double pos[] = { 4859964.138 , -5265612.059 , 0.002 };double vel[] = { -1203.303801, -1098.845511 , 7377.224410 };double acc[] = { 0.0 , 0.0 , 0.0 };double aocs[] = { -0.1672 , 0.0501 , 3.9284 };double att[] = { 0.1 , -0.1 , 0.15 };double datt[] = { 0.0 , 0.0 , 0.0 };double longdrs = 15.4;double mjdrs[] = { -2456.0 , 0.3};double posdrs[] = { 40652295. , 11197507.0 , -844.0 };double veldrs[] = { 0.06 , -0.22 , 0.078 };double sta[] = {0.,0.,0.,0.};#define PL_Boolean PL_Boolean#define PL_FALSE PL_FALSE#define PL_TRUE PL_TRUEtypedef enum{PL_FALSE = 0,      /* False variable */PL_TRUE = 1        /* True variable */} PL_Boolean;#ifndef M_PIstatic const double M_PI=3.14159265358979323846;#endifstatic const double A = 6378137.0;/* Validation for PPF_LIB *//* ---------------------- */START_VALIDATION/* Local variables definition *//* -------------------------- */long status=0;double time[2];double r_j2000[3],rd_j2000[3],r2d_j2000[3];double r_MOD[3],rd_MOD[3],r2d_MOD[3];double r_TOD[3],rd_TOD[3],r2d_TOD[3];double r_EF[3],rd_EF[3],r2d_EF[3];double r_out[3],rd_out[3],r2d_out[3];double rr[3],rrd[3],rr2d[3];double lon_in,lat_in,h_in,lond_in,latd_in,hd_in;double lon_out,lat_out,h_out,lond_out,latd_out,hd_out;double misp[3],mispd[3];long iatt;double xs[3],ys[3],zs[3],xsd[3],ysd[3],zsd[3];double angout[3],angoutd[3];double rx[4],ry[4],rz[4],rxd[4],ryd[4],rzd[4];double rrx[4],rry[4],rrz[4];double rrxd[4],rryd[4],rrzd[4];double x,y,z;double lon1,lat1,lon2,lat2;double h,d,az1,az2;double p;long   mjdt_m[4], mjdt_new[4];double mjdp_m[2], mjdp_new[2], mjdp_tra[2];char utce_m[28], dut1e_m[9], utce_new[28], dut1e_new[9], utce_tra[28], dut1e_tra[9];long   mjdt_pr[4], mjdt_prnew[4];double mjdp_pr[2], mjdp_prnew[2];char utce_pr[28], dut1e_pr[9], utce_prnew[28], dut1e_prnew[9];int con;long cs_in,cs_out;double psun[3],vsun[3],pmoon[3],vmoon[3],pplanet[3],vplanet[3];double time_jpl[2];long pcs_in,pcs_out,iplanet;double rr_out[3],rrd_out[3],rr2d_out[3];double ang, ut1[2], rmoon[3], rdmoon[3], rsun[3], rdsun[3], rplanet[3], rdplanet[3];double ra0, dec0, mu_ra, mu_dec, rad_vel, par, ra, dec, ra_p, dec_p;long mjdt_a1[4],mjdt_a2[4],mjdt_a3[4],mjdt_a4[4];long mjdt_s1[4],mjdt_s2[4];unsigned long sbt0,per0,obtm_1,obtl_1,obtm_2,obtl_2;/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-1 * ****************************************************************************************//*--------- pl_change_sv_cs validation ------------*//*-------------------------------------------------*/START_CHECK("pl_change_sv_cs validation")/* REAL DATA AS INPUTS FOR pl_change_sv_cs *//* ----------------------------------------*/for(con=0;con<2;con++)   {   if(con==0)      {      time[0]= (double) -1127.5;      time[1]= (double) -0.05;      /* AT THIS TIME : */      r_j2000[0]=  (double)4954.255420826*1000.;       r_j2000[1]=  (double)5176.446063286*1000.;      r_j2000[2]=  (double)-39.764584115*1000. ;      rd_j2000[0]= (double)   0.821544143*1000.;      rd_j2000[1]= (double)  -0.741319667*1000.;      rd_j2000[2]= (double)   7.377656733*1000.;      r2d_j2000[0]=(double)0.;      r2d_j2000[1]=(double)0.;      r2d_j2000[2]=(double)0.;      r_MOD[0]=   (double)4957.816882545*1000.;          r_MOD[1]=   (double)5173.023476164*1000.;        r_MOD[2]=   (double) -41.251875801*1000.;       rd_MOD[0]=  (double)   0.823245938*1000.;          rd_MOD[1]=  (double)  -0.741887569*1000.;      rd_MOD[2]=  (double)   7.377409950*1000.;        r2d_MOD[0]= (double)0.;       r2d_MOD[1]= (double)0.;       r2d_MOD[2]= (double)0.;       r_TOD[0]=  (double) 4957.803233005*1000.;         r_TOD[1]=  (double) 5173.034652428*1000.;        r_TOD[2]=  (double)  -41.490126861*1000.;       rd_TOD[0]= (double)    0.823239720*1000.;      rd_TOD[1]= (double)   -0.741537770*1000.;      rd_TOD[2]= (double)    7.377445812*1000.;      r2d_TOD[0]=(double)0.;      r2d_TOD[1]=(double)0.;      r2d_TOD[2]=(double)0.;       r_EF[0]=  (double)-6622.972393372*1000.;      r_EF[1]=  (double) 2734.289198770*1000.;      r_EF[2]=  (double)  -41.486108382*1000.;      rd_EF[0]= (double)    0.590333424*1000.;      rd_EF[1]= (double)    1.519660870*1000.;      rd_EF[2]= (double)    7.377446179*1000.;      r2d_EF[0]=(double)0.;      r2d_EF[1]=(double)0.;      r2d_EF[2]=(double)0.;            }   else if(con==1)      {      time[0]= (double) -1127.48611111;      time[1]= (double) -0.05;            /* 1996/11/29 12:20: 0.0 */      /* AT THIS TIME : */      r_j2000[0]=  (double) 2310.184281427*1000.;      r_j2000[1]=  (double)  956.353819725*1000.;      r_j2000[2]=  (double) 6703.713927191*1000.;      rd_j2000[0]= (double)   -4.637710611*1000.;      rd_j2000[1]= (double)   -5.350625551*1000.;      rd_j2000[2]= (double)    2.356550956*1000.;      r2d_j2000[0]=(double) 0.;      r2d_j2000[1]=(double) 0.;      r2d_j2000[2]=(double) 0.;      r_MOD[0]=   (double) 2312.855805854*1000.;      r_MOD[1]=   (double)  954.757527635*1000.;      r_MOD[2]=   (double) 6703.020255454*1000.;      rd_MOD[0]=  (double)   -4.640697179*1000.;      rd_MOD[1]=  (double)   -5.347421788*1000.;      rd_MOD[2]=  (double)    2.357943157*1000.;      r2d_MOD[0]= (double) 0.;      r2d_MOD[1]= (double) 0.;      r2d_MOD[2]= (double) 0.;      r_TOD[0]=  (double) 2312.845831401*1000.;      r_TOD[1]=  (double)  955.079493995*1000.;      r_TOD[2]=  (double) 6702.977829338*1000.;      rd_TOD[0]= (double)   -4.640685624*1000.;      rd_TOD[1]= (double)   -5.347322980*1000.;      rd_TOD[2]= (double)    2.358189964*1000.;      r2d_TOD[0]=(double) 0.;      r2d_TOD[1]=(double) 0.;      r2d_TOD[2]=(double) 0.;             r_EF[0]=  (double) -1567.051918508*1000.;      r_EF[1]=  (double)  1950.835982494*1000.;      r_EF[2]=  (double)  6702.979316274*1000.;      rd_EF[0]= (double)     6.578987079*1000.;      rd_EF[1]= (double)    -2.835026155*1000.;      rd_EF[2]= (double)     2.358185925*1000.;      r2d_EF[0]=(double) 0.;      r2d_EF[1]=(double) 0.;      r2d_EF[2]=(double) 0.;      }   START_CHECK("AT-20")   /* From GM2000 to MOD */   cs_in=PL_GM2000;   cs_out=PL_MOD;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_j2000,rd_j2000,r2d_j2000,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from GM2000 to MOD(m)",r_out,r_MOD,0,2,1e-3)   CHECK_VEC("Velocity vector from GM2000 to MOD(m/s)",rd_out,rd_MOD,0,2,1e-5)   /* CHECK_VEC("Acceleration vector from GM2000 to MOD(m/s**2)",r2d_out,r2d_MOD,0,2,1e-7) */   /* From GM2000 to TOD */   cs_in=PL_GM2000;   cs_out=PL_TOD;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_j2000,rd_j2000,r2d_j2000,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from GM2000 to TOD(m)",r_out,r_TOD,0,2,1)   CHECK_VEC("Velocity vector from GM2000 to TOD(m/s)",rd_out,rd_TOD,0,2,1e-3)   /* CHECK_VEC("Acceleration vector from GM2000 to TOD(m/s**2)",r2d_out,r2d_TOD,0,2,1e-6) */   /* From GM2000 to EF */   cs_in=PL_GM2000;   cs_out=PL_EF;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_j2000,rd_j2000,r2d_j2000,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from GM2000 to EF(m)",r_out,r_EF,0,2,30)   CHECK_VEC("Velocity vector from GM2000 to EF(m/s)",rd_out,rd_EF,0,2,5e-2)   /* CHECK_VEC("Acceleration vector from GM2000 to EF(m/s**2)",r2d_out,r2d_EF,0,2,1) */   /* From MOD to GM2000 */   cs_in=PL_MOD;   cs_out=PL_GM2000;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_MOD,rd_MOD,r2d_MOD,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from MOD to GM2000(m)",r_out,r_j2000,0,2,1e-3)   CHECK_VEC("Velocity vector from MOD to GM2000(m/s)",rd_out,rd_j2000,0,2,1e-5)   /* CHECK_VEC("Acceleration vector from MOD to GM2000(m/s**2)",r2d_out,r2d_j2000,0,2,1e-7) */   /* From MOD to TOD */   cs_in=PL_MOD;   cs_out=PL_TOD;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_MOD,rd_MOD,r2d_MOD,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from MOD to TOD(m)",r_out,r_TOD,0,2,1)   CHECK_VEC("Velocity vector from MOD to TOD(m/s)",rd_out,rd_TOD,0,2,1e-3)   /* CHECK_VEC("Acceleration vector from MOD to TOD(m/s**2)",r2d_out,r2d_TOD,0,2,1e-6) */   /* From MOD to EF */   cs_in=PL_MOD;   cs_out=PL_EF;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_MOD,rd_MOD,r2d_MOD,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from MOD to EF(m)",r_out,r_EF,0,2,30)   CHECK_VEC("Velocity vector from MOD to EF(m/s)",rd_out,rd_EF,0,2,5e-2)   /* CHECK_VEC("Acceleration vector from MOD to EF(m/s**2)",r2d_out,r2d_EF,0,2,1) */   /* From TOD to GM2000 */   cs_in=PL_TOD;   cs_out=PL_GM2000;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_TOD,rd_TOD,r2d_TOD,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from TOD to GM2000(m)",r_out,r_j2000,0,2,1)   CHECK_VEC("Velocity vector from TOD to GM2000(m/s)",rd_out,rd_j2000,0,2,1e-3)   /* CHECK_VEC("Acceleration vector from TOD to GM2000(m/s**2)",r2d_out,r2d_j2000,0,2,1e-6) */   /* From TOD to MOD */   cs_in=PL_TOD;   cs_out=PL_MOD;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_TOD,rd_TOD,r2d_TOD,r_out,rd_out,r2d_out);      CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from TOD to MOD(m)",r_out,r_MOD,0,2,1)   CHECK_VEC("Velocity vector from TOD to MOD(m/s)",rd_out,rd_MOD,0,2,1e-3)   /* CHECK_VEC("Acceleration vector from TOD to MOD(m/s**2)",r2d_out,r2d_MOD,0,2,1e-6) */   /* From TOD to EF */   cs_in=PL_TOD;   cs_out=PL_EF;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_TOD,rd_TOD,r2d_TOD,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from TOD to EF(m)",r_out,r_EF,0,2,30)   CHECK_VEC("Velocity vector from TOD to EF(m/s)",rd_out,rd_EF,0,2,5e-2)   /* CHECK_VEC("Acceleration vector from TOD to EF(m/s**2)",r2d_out,r2d_EF,0,2,1) */   /* From EF to GM2000 */   cs_in=PL_EF;   cs_out=PL_GM2000;   status=pl_change_sv_cs(time,&cs_in,&cs_out,r_EF,rd_EF,r2d_EF,r_out,rd_out,r2d_out);   CHECK_STATUS("pl_change_sv_cs",status)   CHECK_VEC("Position vector from EF to GM2000(m)",r_out,r_j2000,0,2,30)   CHECK_VEC("Velocity vector from EF to GM2000(m/s)",rd_out,rd_j2000,0,2,5e-2)   /* CHECK_VEC("Acceleration vector from EF to GM2000(m/s**2)",r2d_out,r2d_j2000,0,2,1) */   /* From EF to MOD */   cs_in=PL_EF;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -