@@ -54,6 +54,48 @@ def __init__(
5454 self .splay = {}
5555 self .abut = {}
5656
57+ @property
58+ def fault_normal_vector (self ):
59+ if self .builder == None :
60+ raise ValueError ("Fault builder not set" )
61+ return self .builder .fault_normal_vector
62+
63+ @property
64+ def fault_slip_vector (self ):
65+ if self .builder == None :
66+ raise ValueError ("Fault builder not set" )
67+ return self .builder .fault_slip_vector
68+
69+ @property
70+ def fault_strike_vector (self ):
71+ if self .builder == None :
72+ raise ValueError ("Fault builder not set" )
73+ return self .builder .fault_strike_vector
74+
75+ @property
76+ def fault_minor_axis (self ):
77+ if self .builder == None :
78+ raise ValueError ("Fault builder not set" )
79+ return self .builder .fault_minor_axis
80+
81+ @property
82+ def fault_major_axis (self ):
83+ if self .builder == None :
84+ raise ValueError ("Fault builder not set" )
85+ return self .builder .fault_major_axis
86+
87+ @property
88+ def fault_intermediate_axis (self ):
89+ if self .builder == None :
90+ raise ValueError ("Fault builder not set" )
91+ return self .builder .fault_intermediate_axis
92+
93+ @property
94+ def fault_centre (self ):
95+ if self .builder == None :
96+ raise ValueError ("Fault builder not set" )
97+ return self .builder .fault_centre
98+
5799 def __str__ (self ):
58100 _str = "FaultSegment - {} \n " .format (self .name )
59101 _str += "Interpolator: {} \n " .format (self .faultframe [0 ].interpolator .type )
@@ -381,17 +423,20 @@ def add_abutting_fault(self, abutting_fault_feature, positive=None):
381423 ) # get_value_constraints()
382424 abut_value = np .nanmedian (abutting_fault_feature .evaluate_value (pts ))
383425 positive = abut_value > 0
426+ # we want to crop the fault by the abutting fault so create a positive/neg region and include the fault centre and normal vector to help
427+ # outside of the fault interpolation support
428+
384429 if positive :
385- abutting_region = PositiveRegion (abutting_fault_feature )
430+ abutting_region = PositiveRegion (
431+ abutting_fault_feature ,
432+ vector = abutting_fault_feature .fault_normal_vector ,
433+ point = abutting_fault_feature .fault_centre ,
434+ )
386435 if positive == False :
387- abutting_region = NegativeRegion (abutting_fault_feature )
388- # if positive == True:
389- # ## adding the nan check avoids truncating the fault at the edge of the abutting fault bounding box.
390- # ## it makes the assumption that the abutted fault is not drawn across the abutting fault... but this should be ok
391- # return np.logical_or(abutting_fault_feature.evaluate_value(pos) > 0,
392- # np.isnan(abutting_fault_feature.evaluate_value(pos)))
393- # if positive == False:
394- # return np.logical_or(abutting_fault_feature.evaluate_value(pos) < 0,
395- # np.isnan(abutting_fault_feature.evaluate_value(pos)))
436+ abutting_region = NegativeRegion (
437+ abutting_fault_feature ,
438+ vector = abutting_fault_feature .fault_normal_vector ,
439+ point = abutting_fault_feature .fault_centre ,
440+ )
396441 self .abut [abutting_fault_feature .name ] = abutting_region
397442 self .faultframe [0 ].add_region (abutting_region )
0 commit comments