- Timestamp:
- Jun 29, 2020, 10:09:16 AM (4 years ago)
- Location:
- trunk/BNC/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/PPP/pppClient.cpp
r8956 r8961 220 220 satObs->setPseudoObsIono(t_frequency::G1, stecRef); 221 221 } 222 satObs->printObsMinusComputed();223 222 it++; 224 223 } 225 224 } 226 225 if (_opt->_pseudoObsTropo) { 226 vector<t_pppSatObs*>::iterator it = obsVector.begin(); 227 while (it != obsVector.end()) { 228 t_pppSatObs* satObs = *it; 229 if (satObs->isReference()) { 230 satObs->setPseudoObsTropo(); 231 } 232 it++; 233 } 234 } 235 /* 236 vector<t_pppSatObs*>::iterator it = obsVector.begin(); 237 while (it != obsVector.end()) { 238 t_pppSatObs* satObs = *it; 239 satObs->printObsMinusComputed(); 240 it++; 241 } 242 */ 227 243 return pseudoObsIono; 228 244 } -
trunk/BNC/src/PPP/pppFilter.cpp
r8956 r8961 117 117 // Init Datum Trafo 118 118 // ---------------------------------------- 119 if ((OPT->_obsModelType == OPT->DCMcodeBias || 120 OPT->_obsModelType == OPT->DCMphaseBias) && 121 (_numEpoProcessing == 1)) { 119 if ((OPT->_obsModelType == OPT->DCMcodeBias || 120 OPT->_obsModelType == OPT->DCMphaseBias) && (_numEpoProcessing == 1)) { 122 121 _numAllUsedLCs = 0; 123 122 for (unsigned iSys = 0; iSys < OPT->systems().size(); iSys++) { 124 123 char system = OPT->systems()[iSys]; 125 124 _numAllUsedLCs += OPT->LCs(system).size(); 126 if (OPT->_pseudoObsIono && !epoch->pseudoObsIono()) {125 if (OPT->_pseudoObsIono && epoch->pseudoObsIono() == false) { 127 126 _numAllUsedLCs -= 1; // GIM not used 128 127 } 129 128 } 130 int maxObs = allObs.size() * _numAllUsedLCs; 129 int modify = 0; 130 if (OPT->_pseudoObsTropo) { 131 modify = -1; 132 } 133 // max Obs 134 int maxObs = allObs.size() * (_numAllUsedLCs + modify); 135 if (OPT->_pseudoObsIono && epoch->pseudoObsIono() == true) { // stecDiff w.r.t refSat 136 maxObs -= 1; 137 } 138 if (OPT->_pseudoObsTropo) { 139 maxObs += 1; // once per station 140 } 131 141 _datumTrafo->initAA(maxObs, _parlist->nPar()); 132 142 } … … 144 154 _refPrn = (_obsPool->getRefSatMapElement(system))->prn(); 145 155 if (_obsPool->hasHistoricalRefSat(_refPrn)) { 156 LOG << epoTimeStr << " Warning: prevent to process erroneous refSat again!"; 146 157 return failure; 147 158 } … … 219 230 } 220 231 221 unsigned usedLCs = LCs.size(); //qDebug() << "usedLCs: " << usedLCs;232 unsigned usedLCs = LCs.size(); 222 233 if (OPT->_pseudoObsIono && !pseudoObsIonoAvailable) { 223 234 usedLCs -= 1; // GIM not used 224 235 } 236 225 237 ColumnVector xSav = _xFlt; 226 238 SymmetricMatrix QSav = _QFlt; 227 239 string epoTimeStr = string(_epoTime); 228 240 const vector<t_pppParam*>& params = _parlist->params(); 229 unsigned maxObs = obsVector.size() * usedLCs; 230 //unsigned maxObs = 2 * usedLCs; 231 241 int modify = 0; 242 if (OPT->_pseudoObsTropo) { 243 modify = -1; 244 } 245 // max Obs 246 unsigned maxObs = obsVector.size() * (usedLCs + modify); 232 247 if (OPT->_pseudoObsIono && pseudoObsIonoAvailable) { // stecDiff w.r.t refSat 233 248 maxObs -= 1; 249 } 250 if (OPT->_pseudoObsTropo) { 251 maxObs +=1; // tropo pseudo obs once per station 234 252 } 235 253 … … 257 275 for (unsigned jj = 0; jj < usedLCs; jj++) { 258 276 const t_lc::type tLC = LCs[jj]; 259 if (tLC == t_lc::GIM && obs->isReference()) {continue;} 277 if (tLC == t_lc::GIM && obs->isReference()) {continue;} 278 if (tLC == t_lc::Tz0 && ii+1 != obsVector.size()) {continue;} 260 279 ++iObs; 261 280 usedObs.push_back(obs); … … 417 436 _slips[obs->prn()]._obsSlipCounter = obs->slipCounter(); 418 437 } 419 420 438 if (_slips[obs->prn()]._biasJumpCounter != -1 && 421 439 _slips[obs->prn()]._biasJumpCounter != obs->biasJumpCounter()) { … … 468 486 t_irc t_pppFilter::resetAmb(t_prn prn, const vector<t_pppSatObs*>& obsVector, 469 487 SymmetricMatrix* QSav, ColumnVector* xSav) { 470 488 471 489 t_irc irc = failure; 472 490 vector<t_pppParam*>& params = _parlist->params(); … … 587 605 //////////////////////////////////////////////////////////////////////////// 588 606 void t_pppFilter::datumTransformation(const ColumnVector& xFltOld, const SymmetricMatrix& QFltOld) { 589 590 607 Matrix D21 = _datumTrafo->computeTrafoMatrix(); 591 608 _QFlt << D21 * QFltOld * D21.t(); -
trunk/BNC/src/PPP/pppParlist.cpp
r8956 r8961 141 141 switch (_type) { 142 142 case crdX: 143 if (tLC == t_lc::GIM ) {return 0.0;}143 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 144 144 return (sta->xyzApr()[0] - obs->xc()[0]) / rhoV.NormFrobenius(); 145 145 case crdY: 146 if (tLC == t_lc::GIM ) {return 0.0;}146 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 147 147 return (sta->xyzApr()[1] - obs->xc()[1]) / rhoV.NormFrobenius(); 148 148 case crdZ: 149 if (tLC == t_lc::GIM ) {return 0.0;}149 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 150 150 return (sta->xyzApr()[2] - obs->xc()[2]) / rhoV.NormFrobenius(); 151 151 case clkR: 152 if (tLC == t_lc::GIM ) {return 0.0;}152 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 153 153 return 1.0; 154 154 case offGG: 155 if (tLC == t_lc::GIM ) {return 0.0;}155 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 156 156 return (obs->prn().system() == 'R') ? 1.0 : 0.0; 157 157 case amb: 158 if (tLC == t_lc::GIM ) {return 0.0;}158 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 159 159 else if ((OPT->_obsModelType == OPT->IF) || 160 160 (OPT->_obsModelType == OPT->PPPRTK) || … … 181 181 break; 182 182 case trp: 183 if (tLC == t_lc::GIM) {return 0.0;} 184 return 1.0 / sin(obs->eleSat()); 183 if (tLC == t_lc::GIM) { 184 return 0.0; 185 } 186 else if (tLC == t_lc::Tz0) { 187 return 1.0; 188 } 189 else { 190 return 1.0 / sin(obs->eleSat()); 191 } 185 192 case ion: 186 187 193 if (obs->prn() == _prn) { 188 194 if (tLC == t_lc::c1) { … … 203 209 } 204 210 if (tLC == t_lc::GIM && _prn == refPrn) { 205 return 211 return 1.0; 206 212 } 207 213 break; 208 214 case cBias1: 209 215 if (tLC == t_lc::c1) { 210 return 216 return 1.0; 211 217 } 212 218 else { … … 216 222 case cBias2: 217 223 if (tLC == t_lc::c2) { 218 return 224 return 1.0; 219 225 } 220 226 else { … … 224 230 case pBias1: 225 231 if (tLC == t_lc::l1) { 226 return 232 return 1.0; 227 233 } 228 234 else { … … 232 238 case pBias2: 233 239 if (tLC == t_lc::l2) { 234 return 240 return 1.0; 235 241 } 236 242 else { -
trunk/BNC/src/PPP/pppSatObs.cpp
r8956 r8961 92 92 for (unsigned ii = 0; ii < OPT->LCs(_prn.system()).size(); ii++) { 93 93 t_lc::type tLC = OPT->LCs(_prn.system())[ii]; 94 if (tLC == t_lc::GIM ) {continue;}94 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {continue;} 95 95 if (!isValid(tLC)) { 96 96 _valid = false; … … 190 190 return; 191 191 case t_lc::GIM: 192 case t_lc::Tz0: 192 193 case t_lc::dummy: 193 194 case t_lc::maxLc: … … 218 219 } 219 220 else { 220 return _stecRefSat - _stecSat; 221 } 221 return _stecRefSat; 222 } 223 } 224 225 if (tLC == t_lc::Tz0) { 226 return _model._tropo0; 222 227 } 223 228 … … 292 297 if (tLC == t_lc::GIM) { 293 298 retVal = OPT->_sigmaGIMdiff * OPT->_sigmaGIMdiff; 299 } 300 301 if (tLC == t_lc::Tz0) { 302 retVal = OPT->_sigmaTz0 * OPT->_sigmaTz0; 294 303 } 295 304 … … 407 416 // Tropospheric Delay 408 417 // ------------------ 409 _model._tropo = t_tropo::delay_saast(rRec, _model._eleSat); 418 _model._tropo = t_tropo::delay_saast(rRec, _model._eleSat); 419 _model._tropo0 = t_tropo::delay_saast(rRec, M_PI/2.0); 410 420 411 421 // Code Biases … … 570 580 } 571 581 else if (tLC == t_lc::GIM) { 572 cmpValue = 0.0; 582 cmpValue = _stecSat; 583 } 584 else if (tLC == t_lc::Tz0) { 585 cmpValue = _model._tropo0; 573 586 } 574 587 else { … … 633 646 _stecRefSat = stecRefSat; 634 647 } 648 649 650 // 651 //////////////////////////////////////////////////////////////////////////// 652 void t_pppSatObs::setPseudoObsTropo() {qDebug() << "setPseudoObsTropo"; 653 _tropo0 = _model._tropo0; 654 } -
trunk/BNC/src/PPP/pppSatObs.h
r8905 r8961 46 46 double getRes(t_lc::type tLC) const; 47 47 void setPseudoObsIono(t_frequency::type freq, double stecRefSat); 48 void setPseudoObsTropo(); 48 49 double getIonoCodeDelay(t_frequency::type freq) {return _model._ionoCodeDelay[freq];} 49 50 … … 94 95 _antEcc = 0.0; 95 96 _tropo = 0.0; 97 _tropo0 = 0.0; 96 98 _tideEarth = 0.0; 97 99 _tideOcean = 0.0; … … 114 116 double _antEcc; 115 117 double _tropo; 118 double _tropo0; 116 119 double _tideEarth; 117 120 double _tideOcean; … … 142 145 double _stecRefSat; 143 146 double _stecSat; 147 double _tropo0; 144 148 }; 145 149 -
trunk/BNC/src/pppInclude.h
r8905 r8961 42 42 class t_lc { 43 43 public: 44 enum type {dummy = 0, l1, l2, c1, c2, lIF, cIF, MW, CL, GIM, maxLc};44 enum type {dummy = 0, l1, l2, c1, c2, lIF, cIF, MW, CL, GIM, Tz0, maxLc}; 45 45 46 46 static bool includesPhase(type tt) { … … 56 56 case cIF: 57 57 return false; 58 case dummy: 59 case maxLc: 58 case dummy: 59 case maxLc: 60 60 case GIM: 61 case Tz0: 61 62 return false; 62 63 } … … 76 77 case lIF: 77 78 return false; 78 case dummy: 79 case maxLc: 79 case dummy: 80 case maxLc: 80 81 case GIM: 82 case Tz0: 81 83 return false; 82 84 } … … 100 102 case lIF: case cIF: case MW: case CL: 101 103 return t_frequency::dummy; 102 case dummy: 103 case maxLc: 104 case dummy: 105 case maxLc: 104 106 case GIM: 107 case Tz0: 105 108 return t_frequency::dummy; 106 109 } … … 119 122 case cIF: return "cIF"; 120 123 case GIM: return "GIM"; 121 case dummy: 122 case maxLc: 124 case Tz0: return "Tz0"; 125 case dummy: 126 case maxLc: 123 127 return ""; 124 128 } -
trunk/BNC/src/pppMain.cpp
r8956 r8961 185 185 opt->_obsModelType = t_pppOptions::IF; 186 186 opt->_pseudoObsIono = false; 187 opt->_pseudoObsTropo = false; 187 188 opt->_refSatRequired = false; 188 189 #ifdef USE_PPP 189 190 // Pseudo Observations 190 191 if (settings.value("PPP/pseudoObs").toString() == "Ionosphere") { 191 opt->_pseudoObsIono = true; 192 opt->_pseudoObsIono = true; 193 opt->_pseudoObsTropo = false; 194 } 195 else if (settings.value("PPP/pseudoObs").toString() == "Iono+Tropo") { 196 opt->_pseudoObsIono = true; 197 opt->_pseudoObsTropo = true; 192 198 } 193 199 else if (settings.value("PPP/pseudoObs").toString() == "no") { 194 opt->_pseudoObsIono = false; 200 opt->_pseudoObsIono = false; 201 opt->_pseudoObsTropo = false; 195 202 } 196 203 // Observation Model 197 204 if (settings.value("PPP/modelObs").toString() == "Ionosphere-free PPP") { 198 205 opt->_obsModelType = t_pppOptions::IF; 199 opt->_pseudoObsIono = false; 206 opt->_pseudoObsIono = false; 207 opt->_pseudoObsTropo = false; 200 208 } 201 209 else if (settings.value("PPP/modelObs").toString() == "PPP-RTK") { 202 210 opt->_obsModelType = t_pppOptions::PPPRTK; 203 opt->_pseudoObsIono = false; 211 opt->_pseudoObsIono = false; 212 opt->_pseudoObsTropo = false; 204 213 } 205 214 else if (settings.value("PPP/modelObs").toString() == "Uncombined PPP") { … … 229 238 opt->_LCsGPS.push_back(t_lc::GIM); 230 239 } 240 if (opt->_pseudoObsTropo) { 241 opt->_LCsGPS.push_back(t_lc::Tz0); 242 } 231 243 } 232 244 } … … 240 252 if (opt->_pseudoObsIono) { 241 253 opt->_LCsGPS.push_back(t_lc::GIM); 254 } 255 if (opt->_pseudoObsTropo) { 256 opt->_LCsGPS.push_back(t_lc::Tz0); 242 257 } 243 258 } … … 256 271 opt->_LCsGPS.push_back(t_lc::GIM); 257 272 } 273 if (opt->_pseudoObsTropo) { 274 opt->_LCsGPS.push_back(t_lc::Tz0); 275 } 258 276 } 259 277 } … … 268 286 if (opt->_pseudoObsIono) { 269 287 opt->_LCsGLONASS.push_back(t_lc::GIM); 288 } 289 if (opt->_pseudoObsTropo) { 290 opt->_LCsGPS.push_back(t_lc::Tz0); 270 291 } 271 292 } … … 281 302 opt->_LCsGLONASS.push_back(t_lc::GIM); 282 303 } 304 if (opt->_pseudoObsTropo) { 305 opt->_LCsGPS.push_back(t_lc::Tz0); 306 } 283 307 } 284 308 } … … 296 320 opt->_LCsGLONASS.push_back(t_lc::GIM); 297 321 } 322 if (opt->_pseudoObsTropo) { 323 opt->_LCsGPS.push_back(t_lc::Tz0); 324 } 298 325 } 299 326 } … … 309 336 opt->_LCsGalileo.push_back(t_lc::GIM); 310 337 } 338 if (opt->_pseudoObsTropo) { 339 opt->_LCsGPS.push_back(t_lc::Tz0); 340 } 311 341 } 312 342 } … … 320 350 if (opt->_pseudoObsIono) { 321 351 opt->_LCsGalileo.push_back(t_lc::GIM); 352 } 353 if (opt->_pseudoObsTropo) { 354 opt->_LCsGPS.push_back(t_lc::Tz0); 322 355 } 323 356 } … … 336 369 opt->_LCsGalileo.push_back(t_lc::GIM); 337 370 } 371 if (opt->_pseudoObsTropo) { 372 opt->_LCsGPS.push_back(t_lc::Tz0); 373 } 338 374 } 339 375 } … … 349 385 opt->_LCsBDS.push_back(t_lc::GIM); 350 386 } 387 if (opt->_pseudoObsTropo) { 388 opt->_LCsGPS.push_back(t_lc::Tz0); 389 } 351 390 } 352 391 } … … 360 399 if (opt->_pseudoObsIono) { 361 400 opt->_LCsBDS.push_back(t_lc::GIM); 401 } 402 if (opt->_pseudoObsTropo) { 403 opt->_LCsGPS.push_back(t_lc::Tz0); 362 404 } 363 405 } … … 375 417 if (opt->_pseudoObsIono) { 376 418 opt->_LCsBDS.push_back(t_lc::GIM); 419 } 420 if (opt->_pseudoObsTropo) { 421 opt->_LCsGPS.push_back(t_lc::Tz0); 377 422 } 378 423 } … … 417 462 opt->_aprSigPhaseBias = 1000.0; 418 463 // TODO: Find realistic values!!!!!! 419 opt->_noiseIon = 1 0.0;464 opt->_noiseIon = 1.00; 420 465 opt->_noiseCodeBias = 1.00; 421 466 opt->_noisePhaseBias = 5.00; 422 opt->_sigmaGIMdiff = 2.00; //pseudo observation GIM: STEC(ref_sat) - STEC(sat) 467 // pseudo observations 468 opt->_sigmaGIMdiff = 2.00; // Todo: add to bncWindow 469 opt->_sigmaTz0 = 0.10; 423 470 424 471 _options << opt; -
trunk/BNC/src/pppOptions.h
r8905 r8961 53 53 double _maxResL1; 54 54 double _sigmaGIMdiff; 55 double _ maxResGIMdiff;55 double _sigmaTz0; 56 56 bool _eleWgtCode; 57 57 bool _eleWgtPhase; … … 77 77 std::vector<t_lc::type> _LCsBDS; 78 78 bool _pseudoObsIono; 79 bool _pseudoObsTropo; 79 80 bool _refSatRequired; 80 81 }; -
trunk/BNC/src/pppWidgets.cpp
r8905 r8961 155 155 #else 156 156 _modelObs->addItems(QString("Ionosphere-free PPP,Uncombined PPP,PPP-RTK,DCM with Code Biases,DCM with Phase Biases").split(",")); 157 _pseudoObs->addItems(QString("no,Ionosphere ").split(","));157 _pseudoObs->addItems(QString("no,Ionosphere,Iono+Tropo").split(",")); 158 158 #endif 159 159
Note:
See TracChangeset
for help on using the changeset viewer.