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

📄 ppf_lib_f.f

📁 read envisat and analyis sar data from NASA
💻 F
📖 第 1 页 / 共 2 页
字号:
      STATUS =  PL_PRINT_MSG(24,MSG)      C*******************************************************C* Calculate the geodesic (minimum) distance between   *C* two points that lay on the same ellipsoid           * C*                                                     *C*         LON1_T is the Geocentric longitude of the   *C*                first point [deg]                    *C*         LAT1_T is the Geocentric latitude of the    *C*                first point [deg]                    *C*         LON2_T is the Geocentric longitude of the   *C*                second point [deg]                   *C*         LAT2_T is the Geocentric latitude of the    *C*                second point [deg]                   *C*         H_T is the geodetic altitude between both   * C*                points [m]                           *C*         D_T is the geodesic distance [m]            *C*         AZ1_T is the topocentric azimuth of the     *C*                 geodesic line between the two       *C*                 points at point 1 [deg]             *  C*         AZ2_T is the topocentric azimuth of the     *C*                 geodesic line between the two       *C*                 points at point 2 [deg]             *  C*                                                     *C*******************************************************	             LON1_T= 4.17      LAT1_T= 10.0      LON2_T= 4.17      LAT2_T= -20.0      H_T= 0.D0                                                  N=1      MSG(N) = "\n\nPL_GEO_DISTANCE\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)                                                  EXT_STATUS=PL_GEO_DISTANCE(LON1_T, LAT1_T, LON2_T, LAT2_T,      &                       H_T, D_T, AZ1_T, AZ2_T)      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 4          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_GEO_DISTANCE failed'          ENDIF      ENDIF      WRITE(MSG(1),400) 'D_T', D_T, '\0'      WRITE(MSG(2),400) 'AZ1_T', AZ1_T, '\0'      WRITE(MSG(3),400) 'AZ2_T', AZ2_T, '\0'      STATUS =  PL_PRINT_MSG(3,MSG)      C**************************************************************/C* Calling: pl_tmjd,  pl_emjd,  pl_pmjd,  pl_tadd,  pl_tsub   */C**************************************************************/      MJDT(1) =  -1      MJDT(2) =  43200      MJDT(3) =  0      MJDT(4) =  -500000C* From Transport to Processing and External: tmjd  */C****************************************************/      N=1      MSG(N) = "\n\nPL_TMJD\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)       EXT_STATUS = PL_TMJD( MJDT, MJDP, UTCE, DUT1E )      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 5          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_TMJD failed'          ENDIF      ENDIF       WRITE(MSG(1),400) 'MJDP(1):', MJDP(1), '\0'          WRITE(MSG(2),400) 'MJDP(2):', MJDP(2), '\0'          WRITE(MSG(3),500) 'UTCE:', UTCE, '\0'      WRITE(MSG(4),500) 'DUT1E:', DUT1E, '\0'        STATUS =  PL_PRINT_MSG(4,MSG)      400   FORMAT('-',1X,(A),F30.10,(A))500   FORMAT('-',1X,(A),A50,(A))C* From External to Transport and Processing: emjd  */C****************************************************/       UTCE_2=UTCE      DUT1E_2=DUT1E      N=1      MSG(N) = "\n\nPL_EMJD\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)      EXT_STATUS = PL_EMJD( MJDT_2, MJDP_2, UTCE_2, DUT1E_2 )      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 6          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_EMJD failed'          ENDIF      ENDIF      WRITE(MSG(1),601) '- MJDT(1)' ,MJDT_2(1), '\0'      WRITE(MSG(2),601) '- MJDT(2)' ,MJDT_2(2), '\0'      WRITE(MSG(3),601) '- MJDT(3)' ,MJDT_2(3), '\0'      WRITE(MSG(4),601) '- MJDT(4)' ,MJDT_2(4), '\0'       WRITE(MSG(5),400) '- MJDP(1)' ,MJDP_2(1), '\0'      WRITE(MSG(6),400) '- MJDP(2)' ,MJDP_2(2), '\0'       STATUS =  PL_PRINT_MSG(6,MSG)601   FORMAT(1X,(A),I15,(A))C* From Processing to Transport and External: pmjd  */C****************************************************/       MJDP_3(1) = MJDP(1)      MJDP_3(2) = MJDP(2)      N=1      MSG(N) = "\n\nPL_PMJD\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)       EXT_STATUS = PL_PMJD( MJDT_3, MJDP_3, UTCE_3, DUT1E_3 )      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 7          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_PMJD failed'          ENDIF      ENDIF        WRITE(MSG(1),601) '- MJDT(1)' ,MJDT_3(1), '\0'      WRITE(MSG(2),601) '- MJDT(2)' ,MJDT_3(2), '\0'      WRITE(MSG(3),601) '- MJDT(3)' ,MJDT_3(3), '\0'      WRITE(MSG(4),601) '- MJDT(4)' ,MJDT_3(4), '\0'        WRITE(MSG(5),500) '- UTCE' , UTCE_3, '\0'      WRITE(MSG(6),500) '- DUT1E' , DUT1E_3, '\0'      STATUS =  PL_PRINT_MSG(6,MSG)     C* Adding two Transport Format times: tadd    */C**********************************************/       MJDT_A1(1) =  1111      MJDT_A1(2) =  86000      MJDT_A1(3) =  333333      MJDT_A1(4) =  4444       MJDT_ADD(1) =  111      MJDT_ADD(2) =  422      MJDT_ADD(3) =  800000      MJDT_ADD(4) =  0      N=1      MSG(N) = "\n\nPL_TADD\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)       EXT_STATUS = PL_TADD( MJDT_A1, MJDT_A3, MJDT_ADD )      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 8          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_TADD failed'          ENDIF      ENDIF             WRITE(MSG(1),700) 'MJDT_1',MJDT_A1(1),MJDT_A1(2),MJDT_A1(3)     &                 ,MJDT_A1(4), '\0'      WRITE(MSG(2),700) 'MJDT_ADD',MJDT_ADD(1),MJDT_ADD(2),MJDT_ADD(3)     &                 ,MJDT_ADD(4), '\0'      WRITE(MSG(3),700) 'MJDT_T',MJDT_A3(1),MJDT_A3(2),MJDT_A3(3)     &                 ,MJDT_A3(4), '\0'      STATUS =  PL_PRINT_MSG(3,MSG)700   FORMAT     &('-',1X,(A),'(1)',I15,' (2)',I15,' (3)',I15,' (4)',I15,(A)) C* Substracting two Transport Format times: tsub  */C**************************************************/       N=1      MSG(N) = "\n\nPL_TSUB\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)      EXT_STATUS = PL_TSUB( MJDT_A3, MJDT_A1, MJDT_SUB )      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 9          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_TSUB failed'          ENDIF      ENDIF      WRITE(MSG(1),700) 'MJDT_T',MJDT_A3(1),MJDT_A3(2),MJDT_A3(3)     &                 ,MJDT_A3(4), '\0'            WRITE(MSG(2),700) 'MJDT_1',MJDT_A1(1),MJDT_A1(2),MJDT_A1(3)     &                 ,MJDT_A1(4), '\0'      WRITE(MSG(3),700) 'MJDT_SUB',MJDT_SUB(1),MJDT_SUB(2),MJDT_SUB(3)     &                 ,MJDT_SUB(4), '\0'            STATUS =  PL_PRINT_MSG(3,MSG)C************************************************/C*                                              */C* Calling: pl_sun and pl_moon                  */C*                                              */C*     UT1(1) is UTC time in MJD2000 [days]     */C*     UT1(2) is Delta UT1 time [s]             */C*                                              */C************************************************/      UT1(1) =  0.D0      UT1(2) =  DUMMY_DC************************************************/C*                                              */C*   RSUN is Sun position vector in True        */C*   of Date coordinate system (x,y,z) [m]      */   C*   RDSUN is Sun velocity vector in True       */C*   of Date coordinate system (Vx,Vy,Vz) [m]   */ C*                                              */C************************************************/      N=1      MSG(N) = "\n\nPL_SUN\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)      EXT_STATUS = PL_SUN( UT1, RSUN, RDSUN )      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 12          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_SUN failed'          ENDIF      ENDIF             WRITE(MSG(1),400) 'RSUN(1)', RSUN(1), '\0'      WRITE(MSG(2),400) 'RSUN(2)', RSUN(2), '\0'      WRITE(MSG(3),400) 'RSUN(3)', RSUN(3), '\0'      WRITE(MSG(4),400) 'RDSUN(1)', RDSUN(1), '\0'      WRITE(MSG(5),400) 'RDSUN(2)', RDSUN(2), '\0'      WRITE(MSG(6),400) 'RDSUN(3)', RDSUN(3), '\0'      STATUS =  PL_PRINT_MSG(6,MSG)      C************************************************/C*                                              */C*   RMOON is Moon position vector in True      */C*   of Date coordinate system (x,y,z) [m]      */   C*   RDMOON is Moon velocity vector in True     */C*   of Date coordinate system (Vx,Vy,Vz) [m]   */ C*                                              */C************************************************/      UT1_2(1)=UT1(1)      UT1_2(2)=UT1(2)       N=1      MSG(N) = "\n\nPL_MOON\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)      EXT_STATUS = PL_MOON( UT1, RMOON, RDMOON )      IF (EXT_STATUS .NE. 0) THEN          FUNC_ID = 13          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_MOON failed'          ENDIF      ENDIF                 WRITE(MSG(1),400) 'RMOON(1)', RMOON(1), '\0'      WRITE(MSG(2),400) 'RMOON(2)', RMOON(2), '\0'      WRITE(MSG(3),400) 'RMOON(3)', RMOON(3), '\0'      WRITE(MSG(4),400) 'RDMOON(1)', RDMOON(1), '\0'      WRITE(MSG(5),400) 'RDMOON(2)', RDMOON(2), '\0'      WRITE(MSG(6),400) 'RDMOON(3)', RDMOON(3), '\0'      STATUS =  PL_PRINT_MSG(6,MSG)   C**********************************************************C* Computing planets position and velocity in the         *C* Heliocentric Mean of 2000.0 coordinate system: s       *C*                                                        *C*     R_PLANET is the planet position vector in          *C*              Heliocentric Mean of 2000.0 CS            *C*              (x,y,z) [m]                               *    C*     R_PLANET is the planet velocity vector in          *C*              Heliocentric Mean of 2000.0 CS            *C*              (x,y,z) [m/s]                             *C*                                                        *  C**********************************************************       PLANET_ID=2C**** PLANET_ID=2 means VENUS ************      N=1      MSG(N) = "\n\nPL_PLANETS\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)         EXT_STATUS = PL_PLANETS( PLANET_ID, UT1, R_PLANET, RD_PLANET)      IF( EXT_STATUS.NE.0 ) THEN          FUNC_ID = 14          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_PLANETS failed'          ENDIF      ENDIF             WRITE(MSG(1),400) 'R_PLANET(1)', R_PLANET(1), '\0'      WRITE(MSG(2),400) 'R_PLANET(2)', R_PLANET(2), '\0'      WRITE(MSG(3),400) 'R_PLANET(3)', R_PLANET(3), '\0'      WRITE(MSG(4),400) 'RD_PLANET(1)', RD_PLANET(1), '\0'      WRITE(MSG(5),400) 'RD_PLANET(2)', RD_PLANET(2), '\0'      WRITE(MSG(6),400) 'RD_PLANET(3)', RD_PLANET(3), '\0'      STATUS =  PL_PRINT_MSG(6,MSG)C****************************************************************C*                                                              *C* Computing star cartesian coordinates: PL_star_radec          *C*                                                              *C*    RA0 is the star right ascension in the Barycentric Mean   *C*        of 2000.0 coordinate system at J2000.0 [rad]          * C*    DEC0 is the star declination in the Barycentric Mean      *C*        of 2000.0 coordinate system at J2000.0 [rad]          *C*    MU_RA is the star proper motion in the right ascension    *C*        [rad/century]                                         *C*    MU_DEC is the star proper motion in the declination       *C*        [rad/century]                                         *C*    RAD_VEL is the star radial velocity [au/century]          *C*    PAR is the star parallax [rad]                            *C*    RA is the star right ascension in True of Date at UT1     *C*       [rad]                                                  *C*    DEC is the star declination in True of Date at UT1 [rad]  *C*                                                              * C****************************************************************       UT1(1) = -200.0      UT1(2) = 0.0      RA0   = 3.141592      DEC0  = 0.D0      MU_RA = 0.D0      MU_DEC  = 0.D0      RAD_VEL = 0.D0      PAR   = 0.D0      N=1      MSG(N) = "\n\nPL_STAR_RADEC\n\0"      STATUS =  PL_PRINT_MSG(N,MSG)        EXT_STATUS = PL_STAR_RADEC( UT1, RA0, DEC0, MU_RA, MU_DEC,      &                        RAD_VEL, PAR, RA, DEC )      IF( EXT_STATUS.NE.0 ) THEN          FUNC_ID = 15          STATUS = PL_VECTOR_MSG(FUNC_ID, EXT_STATUS, N, MSG)          STATUS = PL_PRINT_MSG(N, MSG)          IF (EXT_STATUS.LE. -1) THEN          STOP 'PL_STAR_RADEC failed'          ENDIF      ENDIF            WRITE(MSG(1),400) 'UT1(1)', UT1(1), '\0'      WRITE(MSG(2),400) 'RA0', RA0, '\0'      WRITE(MSG(3),400) 'DEC0', DEC0, '\0'      WRITE(MSG(4),400) 'RA', RA, '\0'      WRITE(MSG(5),400) 'DEC', DEC, '\0'      STATUS =  PL_PRINT_MSG(5,MSG)          END

⌨️ 快捷键说明

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