Changes between Initial Version and Version 3 of Ticket #124


Ignore:
Timestamp:
06/08/24 23:16:38 (5 months ago)
Author:
Olly Betts
Comment:

I had another look at this.

I'm not sure if the network simplification would easily handle these cases, but we probably have it leave such legs alone without too much work. Such legs should be rare.

I think legs that only connect horizontally or only vertically are probably feasible (this is the "infinite variance" case). We'd need to:

  • check connectivity for horizontally and vertically separately (if this feature is used)
  • when identifying connected components and articulation points, we treat any connection as a connection
  • when building the matrix, we skip unconnected directions for a leg (and covariances involving those directions, but they ought to be set to zero anyway)

Handling cases of zero variance (i.e. fixing or equating) looks harder. Fixed points don't have a row/column in the matrix; equated stations share a row/column with all the stations they are equated to.

Each row/column has 3 sub-rows/sub-columns (for x, y, z) so it seems we'd need to omit the affected sub-rows, but that makes indexing into the matrix as we build it much more complicated. The matrix is symmetric and we only store half of it. Perhaps the indexing is doable if we have all the 3 sub-row rows first, then the 2 sub-row rows, then the 1 sub-row rows. We might need to pre-calculate the offset for the start of each row, or something like that.

Having the sub-rows there but unused would make the matrix solution more complicated.

Building the matrix with unused rows and then stripping them out before solving also seems complicated.

We also need some extra handling to deal with copy the station coordinates from the solved matrix to the stations as it's no longer as simple as copying adjacent sub-rows to the shared pos structure which equated stations already point at.

Or as an very different approach, maybe we can set up the values in sub-rows/sub-columns we want to omit such that the matrix solution forces them to be equal. For a simple 2x2 matrix it's possible:

(1 -1) (x) = (0) <- "unused" sub-row
(0  1) (y) = (a)

 ^"unused" sub-column

This implies x - y = 0 and y = a i.e. x = y = a

Maybe this doesn't work in the full situation though.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #124

    • Property Component changed from Other to cavern
  • Ticket #124 – Description

    initial v3  
    33Currently, the *fix command insists on having x,y and z coordinates for every fix. It would be useful for the *fix command to support - as a measure like this:
    44
     5{{{
    56*fix trig 1234 5678 -
    67*fix benchmark - - 317
     8}}}
    79
    810The present workaround is quite laborious: