diff --git a/src/seis/utilmeca.c b/src/seis/utilmeca.c index 31142a1bc8f..25324982e06 100644 --- a/src/seis/utilmeca.c +++ b/src/seis/utilmeca.c @@ -914,7 +914,9 @@ void meca_axe2dc (struct SEIS_AXIS T, struct SEIS_AXIS P, struct SEIS_NODAL_PLAN NP2->dip = d2; NP2->str = p2; im = 1; - if (P.dip > T.dip) im = -1; + /* Logic: Use Normal fault (im=-1) if P dip > T dip*/ + /* OR if dips are equal (e.g., 45 deg) BUT not zero (Strike Slip case P=T=0) */ + if (P.dip > T.dip || (fabs(P.dip - T.dip) < SEIS_EPSILON && P.dip > SEIS_EPSILON)) im = -1; NP1->rake = meca_computed_rake2 (NP2->str, NP2->dip, NP1->str, NP1->dip, im); NP2->rake = meca_computed_rake2 (NP1->str, NP1->dip, NP2->str, NP2->dip, im); } diff --git a/test/seis/seis_equal_dip.sh b/test/seis/seis_equal_dip.sh new file mode 100755 index 00000000000..88b6fc23e74 --- /dev/null +++ b/test/seis/seis_equal_dip.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# +# # Check psmeca for cases where P and T axes have equal dips (e.g., vertical dip-slip) +gmt begin seis_equal_dip ps +gmt basemap -R0/10/0/6.5 -JM15c -B0 -BWSen+t"Focal Mechanisms Comparison" + +echo 3.0 5.0 10.0 0 90 90 5.0 0 0 | gmt meca -Sa3.2c+m -Gred -W0.8p,black +echo 7.0 5.0 10.0 0 90 0 5.0 0 0 | gmt meca -Sa3.2c+m -Gblue -W0.8p,black + +echo 3.0 1.8 5 1 360 45 1 90 0 1 180 45.01 1 45.01 | gmt meca -Sa3.2c+m -Gpurple -W0.8p,black +echo 7.0 1.8 5 1 360 45 1 90 0 1 180 45.1 1 45.1 | gmt meca -Sa3.2c+m -Gdarkgreen -W0.8p,black + +# Labels +gmt text -F+f8p,Helvetica-Bold,black+jCB -N << EOF +3.0 3.6 Vertical dip-slip +7.0 3.6 Strike-slip +3.0 0.50 Equal dip 45 +7.0 0.50 Near-equal 45.1 +EOF + +gmt end \ No newline at end of file