Changeset 8915 in ntrip for trunk/BNC/src/PPP/pppFilter.cpp


Ignore:
Timestamp:
Apr 9, 2020, 10:31:37 PM (4 years ago)
Author:
stuerze
Message:

minor changes regarding PPP

File:
1 edited

Legend:

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

    r8912 r8915  
    3939  _obsPool = obsPool;
    4040  _refPrn  = t_prn();
     41  _datumTrafo = new t_datumTrafo();
    4142}
    4243
     
    4546t_pppFilter::~t_pppFilter() {
    4647  delete _parlist;
     48  delete _datumTrafo;
    4749}
    4850
     
    5153t_irc t_pppFilter::processEpoch(int num) {
    5254  _numSat     = 0;
    53   _numOfEpochProcessing = num;
     55  _numEpoProcessing = num;
    5456  const double maxSolGap = 60.0;
    5557
     
    119121      OPT->_obsModelType == OPT->DCMphaseBias) {
    120122    preProcessing = true;
     123    _numAllUsedLCs = 0;
    121124    for (unsigned iSys = 0; iSys < OPT->systems().size(); iSys++) {
    122125      char system = OPT->systems()[iSys];
     126      _numAllUsedLCs += OPT->LCs(system).size();
     127      if (OPT->_pseudoObsIono && !epoch->pseudoObsIono()) {
     128        _numAllUsedLCs -= 1;  // GIM not used
     129      }
    123130      if (OPT->_refSatRequired) {
    124131        _refPrn = (_obsPool->getRefSatMapElement(system))->prn();
     
    137144  }
    138145
     146  if (_numEpoProcessing == 1) {
     147    int maxObs = allObs.size() * _numAllUsedLCs;
     148    _datumTrafo->initAA(maxObs, _parlist->nPar());
     149  }
     150
    139151  // Process Satellite Systems separately
    140152  // ------------------------------------
    141   int numOfAllUsedLCs = 0;
    142153  preProcessing = false;
    143154  for (unsigned iSys = 0; iSys < OPT->systems().size(); iSys++) {
    144155    char system = OPT->systems()[iSys];
    145     numOfAllUsedLCs += OPT->LCs(system).size();
     156    (iSys) ? _datumTrafo->setFirstSystem(false) :
     157                 _datumTrafo->setFirstSystem(true);
    146158    if (OPT->_refSatRequired) {
    147159      _refPrn = (_obsPool->getRefSatMapElement(system))->prn();
     
    167179    _xFlt = xFltOld;
    168180    _QFlt = QFltOld;
    169     initDatumTransformation(numOfAllUsedLCs);
    170181  }
    171182  // close epoch processing
     
    264275    }
    265276
     277    if ((!preProcessing) &&
     278       (OPT->_obsModelType == OPT->DCMcodeBias ||
     279        OPT->_obsModelType == OPT->DCMphaseBias)) {
     280          _datumTrafo->updateIndices(maxObs);
     281      _datumTrafo->prepareAA(AA, _numEpoProcessing, _parlist->nPar());
     282    }
     283
    266284    // Check number of observations, truncate matrices
    267285    // -----------------------------------------------
     
    551569}
    552570
    553 //
    554 ////////////////////////////////////////////////////////////////////////////
    555 void t_pppFilter::initDatumTransformation(int numOfUsedLCs) {
    556 
    557   if (_numOfEpochProcessing == 1) {
    558            _AA1.ReSize(numOfUsedLCs, _parlist->nPar());
    559            _AA1 = 0.0;
    560      _AA2.ReSize(numOfUsedLCs, _parlist->nPar());
    561      _AA2 = 0.0;
    562   }
    563 }
    564 
    565 //
    566 ////////////////////////////////////////////////////////////////////////////
    567 void t_pppFilter::datumTransformation() {
    568 
    569   Matrix D21 = (_AA2.t() * _AA2).i() * _AA2.t() * _AA1;
    570 
    571   _QFlt = D21 * _QFlt * D21.t();
    572 }
    573 
    574 
    575 
    576 
     571// Compute datum transformation
     572////////////////////////////////////////////////////////////////////////////
     573void t_pppFilter::datumTransformation(void) {
     574  _QFlt = _datumTrafo->varCov(Q());
     575}
     576
Note: See TracChangeset for help on using the changeset viewer.