TENSOR 5.45 (jan91) offers five inversion methods. pyTECTOR implements one of them, INVD, and adds a sixth run of its own, S4MIN. This page records what the other four are, so that a reader can tell what pyTECTOR reproduces, what it does not, and why the two things it does run are the two that belong together.
Everything below marked as read off the program is from the FORMAT strings inside the 16-bit binary, transcribed in docs/mesure_oracle.md. Nothing was taken from the compiled mathematics, which is not readable.
WHAT METHOD WILL YOU USE FOR TENSOR COMPUTATION ?
(INVD, R4DT, R4DS, R2DT, R2DS) [help=?] : INVD
DIAGRA carries the same five as plot codes, plus one more that never appears on the computation menu:
-> PALEOSTRESS AXES :
31=INVD, 32=R4DT, 33=R4DS, 34=R2DT, 35=R2DS, 36=DIPT
| Code | Objective function | Free parameters | In pyTECTOR |
|---|---|---|---|
INVD |
S4 = sum |lambda s - tau|^2, Angelier (1990) eq 13 | 4, solved analytically, lambda re-set each pass | yes, as INVDIR + PSIDIR |
R4DT |
S2, the slip deviation angle in tan form | 4: three axis orientations + Phi | no |
R4DS |
S3, the same angle in sin form | 4 | no |
R2DT |
S2, tan form | 2: one axis constrained vertical | no |
R2DS |
S3, sin form | 2: one axis constrained vertical | no |
S4MIN |
S4, the same criterion as INVD |
4, global minimum, lambda fixed at sqrt(3)/2 | yes, pyTECTOR's own |
TENSOR's own credit line for the R series, verbatim in substance: R4DT and R4DS are the 4-D iterative searches minimising S2 (tan) or S3 (sin), the angle-only criteria; R2DT and R2DS constrain one axis to vertical.
"Recherche 4-D" is Angelier's own name for the search family, published as Angelier, J. (1991) Inversion directe et recherche 4-D: comparaison physique et mathematique de deux methodes de determination des tenseurs de paleocontraintes en tectonique de failles. C. R. Acad. Sci. Paris 312(II), 1213-1218. The title is the comparison this page is about: direct inversion against 4-D search.
sigma = T n eq 3
tau = sigma - (n.sigma) n eq 4-5
upsilon^2 = lambda^2 + |tau|^2 - 2 lambda (s.sigma) eq A1
S4 = sum upsilon^2 eq 13
upsilon is the vector difference between the predicted shear stress tau and
lambda times the observed unit slip vector s. It asks two things at once:
that the predicted shear points along the observed slip, and that its magnitude
is near lambda. That second half is why the criterion is biased toward
orientations that load the faults heavily, and why fed perfect noise-free Bott
data it still misses the true tensor by about 4 degrees. See
docs/method.en.md.
The R series minimises the slip deviation angle alone: how many degrees the
predicted shear direction misses the measured striation by. Shear stress
magnitude does not enter the score at all. T and S are two ways of writing
the same angle, tangent and sine; they are not two different physical criteria.
The practical consequence is the one recorded in the note above: an angle-only criterion recovers perfect Bott data to 0.00 degrees, where S4 stops about 4 degrees off. The R series is the less biased family. It is also the one for which no analytical solution exists, which is why it is an iterative search and INVD is not.
Constraining one principal axis to vertical is the Andersonian assumption: the free surface is a principal plane, so the stress axes are one vertical and two horizontal. It cuts the search from four parameters to two.
This is a geological assumption, not a numerical shortcut, and it is exactly the assumption a back-tilt analysis is testing. Running R2DT or R2DS on data you intend to back-tilt would build the conclusion into the method. For the same reason, an R2D solution cannot be used as evidence that the axes "came back to horizontal and vertical" after restoration.
An INFO1 block prints
S1= 0.77 S2= 0.16 S3=-0.94
Those S1 S2 S3 are the principal stress magnitudes of the normalised
tensor. They are not the S2 and S3 criteria named in the R-series methods. Same
letters, unrelated quantities.
- S4MIN's counterpart is INVD, not the R series. They minimise the same
function. The only difference is that INVD stops where the
lambdaadjustment was halted after one or two passes, while S4MIN takes the exact global minimum withlambdafixed at sqrt(3)/2 by the eigen parametrisation. Across all 92 archive sites S4MIN reaches a lower S4, without exception. - The R series is a different question, not a better answer to the same one. A disagreement between an R4DT result and an INVD result is mostly the magnitude term, not an error in either.
- For a tilt test, use S4MIN. S4 is rotation invariant, so its exact minimum turns with the data: back-tilting cannot change S4MIN's Phi or S4, and the whole content of the test is where the axes end up. INVD is not rotation equivariant, because eq (14) pins the tensor diagonal to the geographic frame.
- For continuity with the archive and with the TENSOR literature, report INVD. Every recorded run in the reference archive is an INVD run.
These are stated as open rather than guessed at:
- The algebraic form of S2 and S3 in Angelier's numbering has not been read off a source here. That the two are the tan and sin forms of the deviation angle is TENSOR's own wording; the equations are not in the strings, and the 1991 C. R. Acad. Sci. paper has not been read in full.
- Which axis R2D fixes, or whether the program chooses, is not recorded. The string says only "one axis to vertical".
DIPTappears only as DIAGRA plot code 36, never on TENSOR's computation menu. What it is has not been established.- No R-series run exists anywhere in the reference archive, so unlike INVD there is nothing to validate an implementation against. This is the reason the R series is documented here and not implemented.
- TENSOR 5.45 (jan91) embedded dialogue and credit strings, transcribed in docs/mesure_oracle.md.
- Angelier, J. (1990) Inversion of field data in fault tectonics to obtain the regional stress - III. A new rapid direct inversion method by analytical means. Geophys. J. Int. 103, 363-376.
- Angelier, J. (1991) Inversion directe et recherche 4-D. C. R. Acad. Sci. Paris 312(II), 1213-1218.
- S4 as implemented:
pytector/core.py,S4(). Global minimisation:pytector/modern.py.