Changeset 8619 in ntrip


Ignore:
Timestamp:
Feb 28, 2019, 2:49:35 PM (5 years ago)
Author:
stuerze
Message:

special ssr wind up computation is added

Location:
trunk/BNC/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/PPP/pppSatObs.cpp

    r8495 r8619  
    6262  // ------------------------------------------
    6363  const string preferredAttrib = "CWPXI_";
     64  //const string preferredAttrib = "G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX E:16&BCX E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:IQX I:ABCX S:1&C S:5&IQX";
    6465
    6566  for (unsigned iFreq = 1; iFreq < t_frequency::max; iFreq++) {
     
    106107  // Compute Satellite Coordinates at Time of Transmission
    107108  // -----------------------------------------------------
    108   _xcSat.ReSize(7); _xcSat = 0.0;
     109  _xcSat.ReSize(6); _xcSat = 0.0;
    109110  _vvSat.ReSize(3); _vvSat = 0.0;
    110111  bool totOK  = false;
    111   ColumnVector satPosOld(7); satPosOld = 0.0;
     112  ColumnVector satPosOld(6); satPosOld = 0.0;
    112113  t_lc::type tLC = isValid(t_lc::cIF) ? t_lc::cIF : t_lc::c1;
    113114  double prange = obsValue(tLC);
     
    328329  _model._rho = rhoV.norm_Frobenius();
    329330
     331  ColumnVector vSat = _vvSat;
     332
    330333  ColumnVector neu(3);
    331334  xyz2neu(station->ellApr().data(), rhoV.data(), neu.data());
     
    371374  // ------------------
    372375  _model._tropo = t_tropo::delay_saast(station->xyzApr(), _model._eleSat);
    373 
    374   // Phase Wind-Up
    375   // -------------
    376   _model._windUp = station->windUp(_time, _prn, rSat);
    377376
    378377  // Code Biases
     
    393392  // Phase Biases
    394393  // -----------
    395   // TODO: consideration of fix indicators, yaw angle and jump counter
     394  // TODO: consideration of fix indicators and jump counter
    396395  const t_satPhaseBias* satPhaseBias = PPP_CLIENT->obsPool()->satPhaseBias(_prn);
     396  double yaw = 0.0;
     397  bool ssr = false;
    397398  if (satPhaseBias) {
     399    yaw = satPhaseBias->_yaw;
     400    ssr = true;
    398401    for (unsigned ii = 0; ii < satPhaseBias->_bias.size(); ii++) {
    399402      const t_frqPhaseBias& bias = satPhaseBias->_bias[ii];
     
    407410  }
    408411
     412  // Phase Wind-Up
     413  // -------------
     414  _model._windUp = station->windUp(_time, _prn, rSat, ssr, yaw, vSat) ;
     415
     416
    409417  // Tidal Correction
    410418  // ----------------
     
    428436    }
    429437  }
     438
     439  // Relativistic effect due to earth gravity
     440  // ----------------------------------------
     441  // TODO
    430442
    431443  // Ocean Loading
  • trunk/BNC/src/PPP/pppSatObs.h

    r7836 r8619  
    9090      _tide    = 0.0;
    9191      _windUp  = 0.0;
     92      _rel    = 0.0;
    9293      for (unsigned ii = 0; ii < t_frequency::max; ii++) {
    9394        _antPCO[ii]        = 0.0;
     
    108109    double _tide;
    109110    double _windUp;
     111    double _rel;
    110112    double _antPCO[t_frequency::max];
    111113    double _codeBias[t_frequency::max];
  • trunk/BNC/src/PPP/pppStation.cpp

    r7250 r8619  
    1111 * Created:    29-Jul-2014
    1212 *
    13  * Changes:   
     13 * Changes:
    1414 *
    1515 * -----------------------------------------------------------------------*/
     
    3737}
    3838
    39 // 
     39//
    4040//////////////////////////////////////////////////////////////////////////////
    4141void t_pppStation::setXyzApr(const ColumnVector& xyzApr) {
     
    4545}
    4646
    47 // 
     47//
    4848//////////////////////////////////////////////////////////////////////////////
    4949void t_pppStation::setNeuEcc(const ColumnVector& neuEcc) {
     
    5353}
    5454
    55 // 
     55//
    5656//////////////////////////////////////////////////////////////////////////////
    57 double t_pppStation::windUp(const bncTime& time, t_prn prn,
    58                          const ColumnVector& rSat) const {
    59   return _windUp->value(time, _xyzApr, prn, rSat);
     57double t_pppStation::windUp(const bncTime& time, t_prn prn,
     58                         const ColumnVector& rSat, bool ssr, double yaw,
     59                         const ColumnVector& vSat) const {
     60  return _windUp->value(time, _xyzApr, prn, rSat, ssr, yaw, vSat);
    6061}
    6162
  • trunk/BNC/src/PPP/pppStation.h

    r7250 r8619  
    3131  const ColumnVector& tideDspl()  const {return _tideDspl;}
    3232  double dClk() const {return _dClk;}
    33   double windUp(const bncTime& time, t_prn prn, const ColumnVector& rSat) const;
     33  double windUp(const bncTime& time, t_prn prn, const ColumnVector& rSat, bool ssr,
     34                double yaw, const ColumnVector& vSat) const;
    3435  double stec(const t_vTec* vTec, const double signalPropagationTime, const ColumnVector& rSat) const;
    3536
  • trunk/BNC/src/pppModel.cpp

    r8204 r8619  
    369369///////////////////////////////////////////////////////////////////////////
    370370double t_windUp::value(const bncTime& etime, const ColumnVector& rRec,
    371                        t_prn prn, const ColumnVector& rSat) {
     371                       t_prn prn, const ColumnVector& rSat, bool ssr,
     372                       double yaw, const ColumnVector& vSat) {
    372373
    373374  if (etime.mjddec() != lastEtime[prn.toInt()]) {
     
    380381    // GPS Satellite unit Vectors sz, sy, sx
    381382    // -------------------------------------
     383    ColumnVector sHlp;
     384    if (!ssr) {
     385      sHlp = t_astro::Sun(etime.mjddec());
     386    }
     387    else {
     388      ColumnVector Omega(3);
     389      Omega[0] = 0.0;
     390      Omega[1] = 0.0;
     391      Omega[2] = t_CST::omega;
     392      sHlp = vSat + crossproduct(Omega, rSat);
     393    }
     394    sHlp /= sHlp.norm_Frobenius();
     395
    382396    ColumnVector sz = -rSat / rSat.norm_Frobenius();
    383 
    384     ColumnVector xSun = t_astro::Sun(etime.mjddec());
    385     xSun /= xSun.norm_Frobenius();
    386 
    387     ColumnVector sy = crossproduct(sz, xSun);
     397    ColumnVector sy = crossproduct(sz, sHlp);
    388398    ColumnVector sx = crossproduct(sy, sz);
     399
     400    // Yaw consideration
     401    sx = t_astro::rotZ(yaw) * sx;
    389402
    390403    // Effective Dipole of the GPS Satellite Antenna
    391404    // ---------------------------------------------
    392     ColumnVector dipSat = sx - rho * DotProduct(rho,sx)
    393                                                 - crossproduct(rho, sy);
     405    ColumnVector dipSat = sx - rho * DotProduct(rho,sx) - crossproduct(rho, sy);
    394406
    395407    // Receiver unit Vectors rx, ry
     
    397409    ColumnVector rx(3);
    398410    ColumnVector ry(3);
    399 
    400411    double recEll[3]; xyz2ell(rRec.data(), recEll) ;
    401412    double neu[3];
     
    413424    // Effective Dipole of the Receiver Antenna
    414425    // ----------------------------------------
    415     ColumnVector dipRec = rx - rho * DotProduct(rho,rx)
    416                                                    + crossproduct(rho, ry);
     426    ColumnVector dipRec = rx - rho * DotProduct(rho,rx) + crossproduct(rho, ry);
    417427
    418428    // Resulting Effect
     
    420430    double alpha = DotProduct(dipSat,dipRec) /
    421431                      (dipSat.norm_Frobenius() * dipRec.norm_Frobenius());
    422 
     432/*
    423433    if (alpha >  1.0) alpha =  1.0;
    424434    if (alpha < -1.0) alpha = -1.0;
    425 
     435*/
    426436    double dphi = acos(alpha) / 2.0 / M_PI;  // in cycles
    427437
  • trunk/BNC/src/pppModel.h

    r7998 r8619  
    7171  ~t_windUp() {};
    7272  double value(const bncTime& etime, const ColumnVector& rRec, t_prn prn,
    73                const ColumnVector& rSat);
     73               const ColumnVector& rSat, bool ssr, double yaw,
     74               const ColumnVector& vSat);
    7475 private:
    7576  double lastEtime[t_prn::MAXPRN+1];
Note: See TracChangeset for help on using the changeset viewer.