Changeset 10820 in ntrip
- Timestamp:
- Mar 16, 2026, 7:22:00 PM (3 hours ago)
- Location:
- trunk/BNC/src/combination
- Files:
-
- 2 edited
-
bnccomb.cpp (modified) (12 diffs)
-
bnccomb.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/combination/bnccomb.cpp
r10816 r10820 1058 1058 DiagonalMatrix PP; 1059 1059 1060 if (createAmat(sys, AA, ll, PP, x0) != success) { 1060 if (createAmat(sys, AA, ll, PP, x0, masterCorr) != success) { 1061 1061 return failure; 1062 1062 } … … 1276 1276 // Create First Design Matrix and Vector of Measurements 1277 1277 //////////////////////////////////////////////////////////////////////////// 1278 t_irc bncComb::createAmat(char sys, Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP, const ColumnVector& x0) { 1278 t_irc bncComb::createAmat(char sys, Matrix& AA, ColumnVector& ll, DiagonalMatrix& PP, const ColumnVector& x0, const QMap<QString, cmbCorr*>& masterCorr) { 1279 1279 1280 1280 unsigned nPar = _params[sys].size(); … … 1307 1307 // Consistency corrections to keep the combined clock consistent to masterOrbit 1308 1308 // ---------------------------------------------------------------------------- 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; 1311 1313 double dC_apriori_corr = dC_orb;// + dC_att; 1312 1314 … … 1431 1433 ColumnVector ll; 1432 1434 DiagonalMatrix PP; 1433 if (createAmat(sys, AA, ll, PP, x0) != success) { 1435 if (createAmat(sys, AA, ll, PP, x0, masterCorr) != success) { 1434 1436 return failure; 1435 1437 } … … 1511 1513 corr->_eph == ephPrev ) { 1512 1514 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 } 1513 1525 } 1514 1526 else { … … 1530 1542 cmbCorr* corr = it.next(); 1531 1543 QString prn = corr->_prn; 1544 1532 1545 if (meanRao.find(prn) == meanRao.end()) { 1533 1546 meanRao[prn].ReSize(4); … … 1558 1571 meanRao[prn](4) = 0; 1559 1572 } 1560 corr->_diffRao = corr->_orbCorr._xr - meanRao[prn].Rows(1,3); 1573 corr->_diffRao2Mean = corr->_orbCorr._xr - meanRao[prn].Rows(1,3); 1561 1574 1562 1575 if (maxDiff.find(prn) == maxDiff.end()) { … … 1564 1577 } 1565 1578 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(); 1568 1581 if (norm > normMax) { 1569 1582 maxDiff[prn] = corr; … … 1577 1590 cmbCorr* corr = it.next(); 1578 1591 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()) { 1581 1593 masterCorr[prn] = new cmbCorr(*corr); 1582 masterCorr[prn]->_diffRao = 0.0;1583 masterCorr[prn]->_diffYaw = 0.0;1584 1594 } 1585 1595 } … … 1599 1609 } 1600 1610 else if (corr == maxDiff[prn]) { 1601 double norm = corr->_diffRao.NormFrobenius(); 1611 double norm = corr->_diffRao2Mean.NormFrobenius(); 1602 1612 if (norm > _MAX_DISPLACEMENT) { 1603 1613 out << epoTime.datestr().c_str() << " " … … 1621 1631 cmbCorr* corr = it.next(); 1622 1632 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()) { 1625 1634 masterCorr[prn] = new cmbCorr(*corr); 1626 1635 } … … 1636 1645 delete corr; 1637 1646 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();1643 1647 } 1644 1648 } -
trunk/BNC/src/combination/bnccomb.h
r10813 r10820 118 118 _satYawAngle = 0.0; 119 119 _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; 123 122 } 124 123 ~cmbCorr() { … … 137 136 double _satYawAngle; 138 137 double _dClkResult; 139 ColumnVector _diffRao; 140 double _diffYaw; 141 double _radiusMaster; 138 ColumnVector _satPos; 139 ColumnVector _diffRao2Mean; 142 140 double _weightFactor; 143 141 QString ID() {return _acName + "_" + _prn;} … … 253 251 t_irc processEpoch_filter(bncTime epoTime, char sys, QTextStream& out, QMap<QString, cmbCorr*>& masterCorr, ColumnVector& dx); 254 252 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); 256 254 void dumpResults(bncTime epoTime, QMap<QString, cmbCorr*>& masterCorr); 257 255 void printResults(bncTime epoTime, QTextStream& out, const QMap<QString, cmbCorr*>& masterCorr);
Note:
See TracChangeset
for help on using the changeset viewer.
