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

📄 ppf_lib_valid.c

📁 read envisat and analyis sar data from NASA
💻 C
📖 第 1 页 / 共 2 页
字号:
   cs_out=PL_MOD;   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 MOD(m)",r_out,r_MOD,0,2,30)   CHECK_VEC("Velocity vector from EF to MOD(m/s)",rd_out,rd_MOD,0,2,5e-2)   /* CHECK_VEC("Acceleration vector from EF to MOD(m/s**2)",r2d_out,r2d_MOD,0,2,1) */   /* From EF to TOD */   cs_in=PL_EF;   cs_out=PL_TOD;   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 TOD(m)",r_out,r_TOD,0,2,30)   CHECK_VEC("Velocity vector from EF to TOD(m/s)",rd_out,rd_TOD,0,2,5e-2)   /* CHECK_VEC("Acceleration vector from EF to TOD(m/s**2)",r2d_out,r2d_TOD,0,2,1) */}END_CHECK/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-2 * ****************************************************************************************//*--------pl_geo_car & pl_car_geo validation ---------*//*----------------------------------------------------*/START_CHECK("pl_geo_car & pl_car_geo validation.")/*--- Initialize input data ---*/lon_in=60.0;lat_in=70.0;h_in=2000000.0;lond_in=5.0;latd_in=2.5;hd_in=1000.0;/*------------------------------*/status=pl_geo_car(&lon_in,&lat_in,&h_in,&lond_in,&latd_in,&hd_in,rr,rrd);CHECK_STATUS("pl_geo_car status",status)status=pl_car_geo(rr,rrd,&lon_out,&lat_out,&h_out,&lond_out,&latd_out,&hd_out);CHECK_STATUS("pl_car_geo status",status)/*------------------------------*/CHECK_PAR ("Geocentric longitude consistency.",lon_out,lon_in,1e-6)CHECK_PAR ("Geodetic latitude consistency.",lat_out,lat_in,1e-6)CHECK_PAR ("Geodetic altitude consistency.",h_out,h_in,1e-3)CHECK_PAR ("Geocentric longitude rate consistency.",lond_out,lond_in,1e-3)CHECK_PAR ("Geodetic latitude rate consistency.",latd_out,latd_in,1e-3)CHECK_PAR ("Geodetic altitude rate consistency.",hd_out,hd_in,1e-3)END_CHECK/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-3 * ****************************************************************************************//*----------pl_srar_cs validation--------------*//*---------------------------------------------*/START_CHECK("pl_srar_cs validation")/*--- Inputs initialization ---*/misp[0]=att[1];         /*--- Pitch angle ---*/misp[1]=att[2];         /*--- Roll angle ---*/misp[2]=att[0];         /*--- Yaw angle ---*/mispd[0]=datt[1];       /*--- Pitch angle rate ---*/mispd[1]=datt[2];       /*--- Roll angle rate ---*/mispd[2]=datt[0];       /*--- Yaw angle rate ---*/iatt=1;/*-----------------------------*/status=pl_srar_cs(pos,vel,acc,aocs,misp,mispd,xs,ys,zs,xsd,ysd,zsd,angout,angoutd);CHECK_STATUS ("pl_srar_cs status",status)for (i=1;i<=3;i++) rx[i]=xs[i-1];for (i=1;i<=3;i++) ry[i]=ys[i-1];for (i=1;i<=3;i++) rz[i]=zs[i-1];for (i=1;i<=3;i++) rxd[i]=xsd[i-1];for (i=1;i<=3;i++) ryd[i]=ysd[i-1];for (i=1;i<=3;i++) rzd[i]=zsd[i-1];rrx[1]=-0.7028840532726205; rrx[2]=-0.6523026281954788; rrx[3]=-0.2836464152855158; rry[1]=0.2096204695839999; rry[2]=0.1911030319047854; rry[3]=-0.9589259042951037; rrz[1]=0.6797155775664079; rrz[2]=-0.7334718211670233;rrz[3]=0.002412709575291077;rrxd[1]=5.063702825886715e-05; rrxd[2]=-5.574402970030661e-05;rrxd[3]=2.714708771020343e-06; rryd[1]=0.0007171613975994411; rryd[2]=-0.0007776056583015462;rryd[3]=1.802965168452014e-06; rrzd[1]=-0.0001688055313883543; rrzd[2]=-0.0001530267675034051; rrzd[3]=0.001035734860758374;  x=sqrt(fabs(2.0-2.0*(rx[1]*rrx[1]+rx[2]*rrx[2]+rx[3]*rrx[3])));y=sqrt(fabs(2.0-2.0*(ry[1]*rry[1]+ry[2]*rry[2]+ry[3]*rry[3])));z=sqrt(fabs(2.0-2.0*(rz[1]*rrz[1]+rz[2]*rrz[2]+rz[3]*rrz[3])));CHECK_PAR ("pl_srar_cs. X-axis accuracy.",x,0.0,1e-3)CHECK_PAR ("pl_srar_cs. Y-axis accuracy.",y,0.0,1e-3)CHECK_PAR ("pl_srar_cs. Z-axis accuracy.",z,0.0,1e-3)CHECK_VEC ("pl_srar_cs. X-axis rate accuracy.",rrxd,rxd,1,3,1e-3)CHECK_VEC ("pl_srar_cs. Y-axis rate accuracy.",rryd,ryd,1,3,1e-3)CHECK_VEC ("pl_srar_cs. Z-axis rate accuracy.",rrzd,rzd,1,3,1e-3)END_CHECK/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-4 * ****************************************************************************************//*------------pl_geo_distance validation-------------------*//*---------------------------------------------------------*/START_CHECK("pl_geo_distance validation")/*--- Input Initialization ---*//*----------------------------*/lon1=0.0;lat1=0.0;lon2=90.0;lat2=0.0;h=0.0;status=pl_geo_distance(&lon1,&lat1,&lon2,&lat2,&h,&d,&az1,&az2);CHECK_STATUS("pl_geo_distance status",status)p=(M_PI)*A/2.0;CHECK_PAR("AT-21.Geodesic distance accuracy.",d,p,20000)printf("\t\tGeodesic distance is equal to: %lf m.\n",d);CHECK_PAR("AT-21.Geodesic azimuth of initial point.",az1,90.0,1e-6)CHECK_PAR("AT-21.Geodesic azimuth of final point.",az2,270.0,1e-6)END_CHECK/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-5 * ****************************************************************************************//*---------- pmjd & emjd validation ---------------*//*-------------------------------------------------*/START_CHECK("pmjd & emjd validation")   mjdp_m[0] = mjdp[0];   mjdp_m[1] = mjdp[1];   status = pmjd( mjdt_m, mjdp_m, utce_m, dut1e_m );   strcpy( utce_new, utce_m );   strcpy( dut1e_new, dut1e_m );   status = emjd( mjdt_new, mjdp_new, utce_new, dut1e_new );   CHECK_PAR( "MJD output vs MJD input", mjdp_new[0], mjdp_m[0], 1.16e-11 )   CHECK_PAR( "DeltaUT1 output vs DeltaUT1 input", mjdp_new[1], mjdp_m[1], 1.16e-11)END_CHECK/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-6 * ****************************************************************************************//*----------- pl_sun, pl_moon, pl_planets & pl_star_radec validation -----------*//*==============================================================================*/ START_CHECK("pl_sun, pl_moon, pl_planets & pl_star_radec validation.")/*--- Initialize input data ---*/   /* Output data taken from JPL file for date 1 Jan 1997.       Given in GEO-MEAN-2000 reference system              */   psun[0] =  27194878.68362263;   psun[1] = -132630129.1728563;   psun[2] = -57503402.89730293;   vsun[0] = 29.76142628120521;   vsun[1] = 5.144322852105286;   vsun[2] = 2.231621282770508;   pmoon[0] = -401090.0604245735;   pmoon[1] =    8806.974516115712;   pmoon[2] =    1317.167354695972;   vmoon[0] = 0.01573390305025041;   vmoon[1] = -0.924535097549946;   vmoon[2] = -0.3073301858923245;   pplanet[0] =  360537246.5220062;   pplanet[1] = -620606064.8551784;   pplanet[2] = -274804229.4228395;   vplanet[0] = 11.37592527879614;   vplanet[1] = 6.301985231532927;   vplanet[2] = 2.424137059795838;   /* To compare with JPL data we will need to transform from MEAN-2000 to TOD  */   for( i=0 ; i<3 ; i++ ) {      rr[i] = pmoon[i];      rrd[i] =vmoon[i];   }      time_jpl[0]= -1095.;    time_jpl[1]=0.0;   pcs_in=PL_GM2000;    /* GEO_MEAN_2000 */   pcs_out=PL_TOD;   /* MEAN_DATE */   status=pl_change_sv_cs(time_jpl,&pcs_in,&pcs_out,rr,rrd,rr2d,rr_out,rrd_out,rr2d_out);   for( i=0 ; i<3 ; i++ ) {      pmoon[i] = rr_out[i];      vmoon[i] = rrd_out[i];   }   for( i=0 ; i<3 ; i++ ) {      rr[i] = psun[i];      rrd[i] =vsun[i];   }   status=pl_change_sv_cs(time_jpl,&pcs_in,&pcs_out,rr,rrd,rr2d,rr_out,rrd_out,rr2d_out);   for( i=0 ; i<3 ; i++ ) {      psun[i] = rr_out[i];      vsun[i] = rrd_out[i];   }   /* we need not change for pl_planet since it is given in MEAN-2000 */   ut1[0] = -1095.;   ut1[1] = 0.0;   ra0 = 1.2;     /* rad */   dec0 = 0.2;    /* rad */   mu_ra = 0.;    /* rad/century */   mu_dec = 0.;   /* rad/century */   rad_vel = 0.;  /* AU/century */   par = 0.;      /* rad */   ra=dec=0;   ra_p = 1.2;    /* I don't know the true values */   dec_p = 0.2;/*------------------------------*/status = pl_sun( ut1, rsun, rdsun );CHECK_STATUS("pl_sun status",status)status = pl_moon( ut1, rmoon, rdmoon );         CHECK_STATUS("pl_moon status",status)iplanet=5;status = pl_planets( &iplanet, ut1, rplanet, rdplanet );CHECK_STATUS("pl_planets status",status)pl_star_radec( ut1, &ra0, &dec0, &mu_ra, &mu_dec, &rad_vel, &par, &ra, &dec);CHECK_STATUS("pl_star_radec status",status)for( i=0 ; i<3 ; i++ ) {  /* transform to km and km/s  */  rsun[i] /=1000.;  rdsun[i] /=1000.;  rmoon[i] /=1000.;  rdmoon[i] /=1000.;  rplanet[i] /=1000.;  rdplanet[i] /=1000.;}/*------------------------------*/CHECK_VEC( "Sun position consistency:   ", rsun, psun, 0,2, 2000.0 )CHECK_VEC( "Sun velocity consistency:   ", rdsun, vsun, 0,2, 0.005 )ang = acos( (rsun[0]*psun[0]+rsun[1]*psun[1]+rsun[2]*psun[2])/sqrt(rsun[0]*rsun[0]+rsun[1]*rsun[1]+rsun[2]*rsun[2])/sqrt(psun[0]*psun[0]+psun[1]*psun[1]+psun[2]*psun[2]))*      (180000./M_PI);CHECK_PAR( "Sun angle difference(mdeg)  ", ang, 0., 1. )CHECK_VEC( "Moon position consistency:  ", rmoon, pmoon, 0,2, 100.0 )CHECK_VEC( "Moon velocity consistency:  ", rdmoon, vmoon, 0,2, 0.005 )ang = acos( (rmoon[0]*pmoon[0]+rmoon[1]*pmoon[1]+rmoon[2]*pmoon[2])/sqrt(rmoon[0]*rmoon[0]+rmoon[1]*rmoon[1]+rmoon[2]*rmoon[2])/sqrt( pmoon[0]*pmoon[0]+pmoon[1]*pmoon[1]+pmoon[2]*pmoon[2]))*      (180000./M_PI);CHECK_PAR( "Moon angle difference(mdeg) ", ang, 0., 10 )CHECK_VEC( "Planet position consistency:  ", rplanet, pplanet, 0,2, 200000.0 )CHECK_VEC( "Planet velocity consistency:  ", rdplanet, vplanet, 0,2, 0.1 )ang = acos( (rplanet[0]*pplanet[0]+rplanet[1]*pplanet[1]+rplanet[2]*pplanet[2])/sqrt(rplanet[0]*rplanet[0]+rplanet[1]*rplanet[1]+rplanet[2]*rplanet[2])/sqrt( pplanet[0]*pplanet[0]+pplanet[1]*pplanet[1]+pplanet[2]*pplanet[2]))*      (180000./M_PI);CHECK_PAR( "Planet angle difference(mdeg) ", ang, 0., 10. )CHECK_PAR( "Star RA  consistency:         ", ra, ra_p, 1e-3 )CHECK_PAR( "Star DEC consistency:         ", dec, dec_p, 1e-3 )END_CHECK/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-7 * ****************************************************************************************//*------------tadd & tsub validation -------------------*//*======================================================*/START_CHECK("tadd & tsub validation")   mjdt_a1[0] = (long) 1111;   mjdt_a1[1] = (long) 86000;   mjdt_a1[2] = (long) 333333;   mjdt_a1[3] = (long) 4444;   mjdt_a2[0] = (long) 111;   mjdt_a2[1] = (long) 422;   mjdt_a2[2] = (long) 800000;   mjdt_a2[3] = (long) 444;   status = tadd( mjdt_a1, mjdt_a3, mjdt_a2 );   CHECK_STATUS("tadd status",status)   status = tsub( mjdt_a3, mjdt_a2, mjdt_a4);   CHECK_STATUS("tsub status",status)   CHECK_VEC( "tadd & tsub conistency:  ", mjdt_a1, mjdt_a4, 0,3,1e-11)END_CHECK/***************************************************************************************** * * --------- * Test case * --------- * * Test number          : VT-8 * ****************************************************************************************//*----------sbtutc & utcsbt--------------------*//*=============================================*/START_CHECK("sbutc & utcsbt validation")   obtm_1 = (unsigned long) 0xABCDEF01;   obtl_1 = (unsigned long) 0;   mjdt_s1[0] = (long) 1111;   mjdt_s1[1] = (long) 86000;   mjdt_s1[2] = (long) 333333;   mjdt_s1[3] = (long) 0;   sbt0  = (unsigned long) 0xABCDEF01;   per0  = (double) 1.0E12 / (double) 256.0;   status = sbtutc( mjdt_s1, &sbt0, &per0, &obtm_1, &obtl_1, mjdt_s2 );   CHECK_STATUS("sbtutc status",status)   status = utcsbt( mjdt_s1, &sbt0, &per0, &obtm_2, &obtl_2, mjdt_s2 );   CHECK_STATUS("utcsbt status",status)    CHECK_PAR ("obt consistency LSB",obtm_1,obtm_2,1e-11)   CHECK_PAR ("obt consistency MSB",obtl_1,obtl_2,1e-11)END_CHECK START_CHECK("tmjd, pmjd & emjd validation")   mjdp_m[0] = mjdp[0];   mjdp_m[1] = mjdp[1];   mjdp_m[0] = 1.1E-7;   mjdp_m[0] = 1.1E-3;   status = pmjd( mjdt_m, mjdp_m, utce_m, dut1e_m );   strcpy( utce_new, utce_m );   strcpy( dut1e_new, dut1e_m );   status = emjd( mjdt_new, mjdp_new, utce_new, dut1e_new );   status = tmjd( mjdt_new, mjdp_tra, utce_tra, dut1e_tra );   printf( "------- Processing Format input :%19.12lf\n", mjdp_m[0] );   printf( "------- Processing Format output:%19.12lf\n", mjdp_tra[0] );   CHECK_PAR( "Processing Format loop (pmjd->emjd)      : pmjd input vs output", mjdp_m[0], mjdp_new[0], 1.16E-11 )    CHECK_PAR( "Processing Format loop (pmjd->emjd->tmjd): pmjd input vs output", mjdp_m[0], mjdp_tra[0], 1.16E-11 )  END_CHECKEND_VALIDATION

⌨️ 快捷键说明

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