FLAC2D:
def ps3d ; put 3D principal stresses
; into ex_1,2,3
loop i (1,izones)
loop j (1,jzones)
$sdif = sxx(i,j) - syy(i,j)
$s0 = 0.5 * (sxx(i,j) + syy(i,j))
$st = 4.0 * sxy(i,j)^2
$rad = 0.5 * sqrt($sdif^2 + $st)
$si = $s0 - $rad
$sii = $s0 + $rad
section
if szz(i,j) > $sii then
; ---- szz is minor p.s. ----
ex_1(i,j) = $si
ex_2(i,j) = $sii
ex_3(i,j) = szz(i,j)
exit section
end_if
if szz(i,j) < $si then
; ---- szz is major p.s. ----
ex_1(i,j) = szz(i,j)
ex_2(i,j) = $si
ex_3(i,j) = $sii
exit section
end_if
; ---- szz is intermediate ---
ex_1(i,j) = $si
ex_2(i,j) = szz(i,j)
ex_3(i,j) = $sii
end_section
end_loop
end_loop
end