Changeset 10820 in ntrip


Ignore:
Timestamp:
Mar 16, 2026, 7:22:00 PM (3 hours ago)
Author:
stuerze
Message:

minor changes

Location:
trunk/BNC/src/combination
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/combination/bnccomb.cpp

    r10816 r10820  
    10581058    DiagonalMatrix PP;
    10591059
    1060     if (createAmat(sys, AA, ll, PP, x0) != success) {
     1060    if (createAmat(sys, AA, ll, PP, x0, masterCorr) != success) {
    10611061      return failure;
    10621062    }
     
    12761276// Create First Design Matrix and Vector of Measurements
    12771277////////////////////////////////////////////////////////////////////////////
    1278 t_irc bncComb::createAmat(char sys, Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP, const ColumnVector& x0) {
     1278t_irc bncComb::createAmat(char sys, Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP, const ColumnVector& x0, const QMap<QString, cmbCorr*>& masterCorr) {
    12791279
    12801280  unsigned nPar = _params[sys].size();
     
    13071307    // Consistency corrections to keep the combined clock consistent to masterOrbit
    13081308    // ----------------------------------------------------------------------------
    1309     double dC_orb = dotproduct(corr->_diffRao, corr->_orbCorr._xr) / corr->_radiusMaster;
    1310     double dC_att = corr->_diffYaw / (2 * M_PI); dC_att *= corr->_lambdaIF;
     1309    double dC_orb = DotProduct((corr->_satPos - masterCorr[prn]->_satPos), corr->_satPos);
     1310    dC_orb /= masterCorr[prn]->_satPos.NormFrobenius();
     1311    double dC_att = (corr->_satYawAngle - masterCorr[prn]->_satYawAngle) / (2 * M_PI);
     1312    dC_att *= corr->_lambdaIF;
    13111313    double dC_apriori_corr = dC_orb;// + dC_att;
    13121314
     
    14311433    ColumnVector   ll;
    14321434    DiagonalMatrix PP;
    1433     if (createAmat(sys, AA, ll, PP, x0) != success) {
     1435    if (createAmat(sys, AA, ll, PP, x0, masterCorr) != success) {
    14341436      return failure;
    14351437    }
     
    15111513           corr->_eph == ephPrev ) {
    15121514        switchToLastEph(ephLast, corr);
     1515
     1516        ColumnVector xc(6);
     1517        ColumnVector vv(3);
     1518        if (corr->_eph->getCrd(corr->_time, xc, vv, false) != success) {
     1519          delete corr;
     1520          im.remove();
     1521        }
     1522        else {
     1523          corr->_satPos = xc.Rows(1,3);
     1524        }
    15131525      }
    15141526      else {
     
    15301542      cmbCorr* corr = it.next();
    15311543      QString  prn  = corr->_prn;
     1544
    15321545      if (meanRao.find(prn) == meanRao.end()) {
    15331546        meanRao[prn].ReSize(4);
     
    15581571        meanRao[prn](4) = 0;
    15591572      }
    1560       corr->_diffRao = corr->_orbCorr._xr - meanRao[prn].Rows(1,3);
     1573      corr->_diffRao2Mean = corr->_orbCorr._xr - meanRao[prn].Rows(1,3);
    15611574
    15621575      if (maxDiff.find(prn) == maxDiff.end()) {
     
    15641577      }
    15651578      else {
    1566         double normMax = maxDiff[prn]->_diffRao.NormFrobenius();
    1567         double norm    = corr->_diffRao.NormFrobenius();
     1579        double normMax = maxDiff[prn]->_diffRao2Mean.NormFrobenius();
     1580        double norm    = corr->_diffRao2Mean.NormFrobenius();
    15681581        if (norm > normMax) {
    15691582          maxDiff[prn] = corr;
     
    15771590        cmbCorr* corr = it.next();
    15781591        QString  prn  = corr->_prn;
    1579         if (corr->_acName == _masterOrbitAC[sys] &&
    1580             masterCorr.find(prn) == masterCorr.end()) {
     1592        if (corr->_acName == _masterOrbitAC[sys] && masterCorr.find(prn) == masterCorr.end()) {
    15811593          masterCorr[prn] = new cmbCorr(*corr);
    1582           masterCorr[prn]->_diffRao = 0.0;
    1583           masterCorr[prn]->_diffYaw = 0.0;
    15841594        }
    15851595      }
     
    15991609      }
    16001610      else if (corr == maxDiff[prn]) {
    1601         double norm = corr->_diffRao.NormFrobenius();
     1611        double norm = corr->_diffRao2Mean.NormFrobenius();
    16021612        if (norm > _MAX_DISPLACEMENT) {
    16031613          out << epoTime.datestr().c_str()    << " "
     
    16211631        cmbCorr* corr = it.next();
    16221632        QString  prn  = corr->_prn;
    1623         if (corr->_acName == _masterOrbitAC[sys] &&
    1624             masterCorr.find(prn) == masterCorr.end()) {
     1633        if (corr->_acName == _masterOrbitAC[sys] && masterCorr.find(prn) == masterCorr.end()) {
    16251634          masterCorr[prn] = new cmbCorr(*corr);
    16261635        }
     
    16361645          delete corr;
    16371646          im.remove();
    1638         }
    1639         else {
    1640           corr->_diffRao = corr->_orbCorr._xr - masterCorr[prn]->_orbCorr._xr;
    1641           corr->_diffYaw = corr->_satYawAngle - masterCorr[prn]->_satYawAngle;
    1642           corr->_radiusMaster = masterCorr[prn]->_orbCorr._xr.NormFrobenius();
    16431647        }
    16441648      }
  • trunk/BNC/src/combination/bnccomb.h

    r10813 r10820  
    118118      _satYawAngle                 = 0.0;
    119119      _weightFactor                = 1.0;
    120       _diffRao.ReSize(3); _diffRao = 0.0;
    121       _diffYaw                     = 0.0;
    122       _radiusMaster                = 0.0;
     120      _satPos.ReSize(3); _satPos   = 0.0;
     121      _diffRao2Mean                = 0.0;
    123122    }
    124123    ~cmbCorr() {
     
    137136    double         _satYawAngle;
    138137    double         _dClkResult;
    139     ColumnVector   _diffRao;
    140     double         _diffYaw;
    141     double         _radiusMaster;
     138    ColumnVector   _satPos;
     139    ColumnVector   _diffRao2Mean;
    142140    double         _weightFactor;
    143141    QString ID() {return _acName + "_" + _prn;}
     
    253251  t_irc processEpoch_filter(bncTime epoTime, char sys, QTextStream& out, QMap<QString, cmbCorr*>& masterCorr, ColumnVector& dx);
    254252  t_irc processEpoch_singleEpoch(bncTime epoTime, char sys, QTextStream& out, QMap<QString, cmbCorr*>& masterCorr, ColumnVector& dx);
    255   t_irc createAmat(char sys, Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP, const ColumnVector& x0);
     253  t_irc createAmat(char sys, Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP, const ColumnVector& x0, const QMap<QString, cmbCorr*>& masterCorr);
    256254  void  dumpResults(bncTime epoTime, QMap<QString, cmbCorr*>& masterCorr);
    257255  void  printResults(bncTime epoTime, QTextStream& out, const QMap<QString, cmbCorr*>& masterCorr);
Note: See TracChangeset for help on using the changeset viewer.