@@ -391,6 +391,127 @@ def evaluate_value(self, points):
391391
392392 return intrusion_sf
393393
394+ def evaluate_value_test (self , points ):
395+
396+ """
397+ Computes a distance scalar field to the intrusion contact (isovalue = 0).
398+
399+ Parameters
400+ ------------
401+ points : numpy array (x,y,z), points where the IntrusionFeature is evaluated.
402+
403+ Returns
404+ ------------
405+ intrusion_sf : numpy array, contains distance to intrusion contact
406+
407+ """
408+ self .builder .up_to_date ()
409+
410+ # compute coordinates values for each evaluated point
411+ intrusion_coord0_pts = self .intrusion_frame [0 ].evaluate_value (points )
412+ intrusion_coord1_pts = self .intrusion_frame [1 ].evaluate_value (points )
413+ intrusion_coord2_pts = self .intrusion_frame [2 ].evaluate_value (points )
414+
415+ self .evaluated_points = [
416+ points ,
417+ intrusion_coord0_pts ,
418+ intrusion_coord1_pts ,
419+ intrusion_coord2_pts ,
420+
421+ ]
422+
423+
424+ thresholds , residuals , conceptual = self .interpolate_lateral_thresholds (
425+ intrusion_coord1_pts
426+ )
427+
428+ if self .intrusion_frame .builder .marginal_faults is not None :
429+ c2_minside_threshold = np .zeros_like (intrusion_coord2_pts )
430+ c2_maxside_threshold = thresholds [1 ]
431+
432+
433+ else :
434+ c2_minside_threshold = thresholds [0 ]
435+ c2_maxside_threshold = thresholds [1 ]
436+
437+
438+ thresholds , residuals , conceptual = self .interpolate_vertical_thresholds (
439+ intrusion_coord1_pts , intrusion_coord2_pts
440+ )
441+ c0_minside_threshold = thresholds [1 ]
442+ c0_maxside_threshold = thresholds [0 ]
443+
444+
445+ mid_point = c0_minside_threshold + (
446+ (c0_maxside_threshold - c0_minside_threshold ) / 2
447+ )
448+
449+
450+
451+ mod_intrusion_coord0_pts = intrusion_coord0_pts - mid_point
452+ mod_c0_minside_threshold = c0_minside_threshold - mid_point
453+ mod_c0_maxside_threshold = c0_maxside_threshold + mid_point
454+
455+ a = (mod_intrusion_coord0_pts >= mid_point )* (c2_minside_threshold < intrusion_coord2_pts )* (intrusion_coord2_pts < c2_maxside_threshold )
456+ b = (mod_intrusion_coord0_pts <= mid_point )* (c2_minside_threshold < intrusion_coord2_pts )* (intrusion_coord2_pts < c2_maxside_threshold )
457+ c = (mod_intrusion_coord0_pts <= mid_point )* (mod_intrusion_coord0_pts >= mod_c0_minside_threshold )* (c2_minside_threshold < intrusion_coord2_pts )* (intrusion_coord2_pts < c2_maxside_threshold )
458+
459+ intrusion_sf = mod_intrusion_coord0_pts
460+ intrusion_sf [a ] = mod_intrusion_coord0_pts [a ] - mod_c0_maxside_threshold [a ]
461+ intrusion_sf [b ] = abs (mod_c0_minside_threshold [b ] + mod_intrusion_coord0_pts [b ])
462+ intrusion_sf [c ] = mod_intrusion_coord0_pts [c ] - mod_c0_minside_threshold [c ]
463+
464+
465+ # a = intrusion_coord2_pts >= c2_maxside_threshold
466+ # b = intrusion_coord2_pts <= c2_minside_threshold
467+ # c = (
468+ # (c2_minside_threshold < intrusion_coord2_pts)
469+ # * (intrusion_coord2_pts < c2_maxside_threshold)
470+ # * (intrusion_coord0_pts <= c0_minside_threshold)
471+ # )
472+ # d = (
473+ # (c2_minside_threshold < intrusion_coord2_pts)
474+ # * (intrusion_coord2_pts < c2_maxside_threshold)
475+ # * (intrusion_coord0_pts >= c0_maxside_threshold)
476+ # )
477+ # e = (
478+ # (c2_minside_threshold < intrusion_coord2_pts)
479+ # * (intrusion_coord2_pts < c2_maxside_threshold)
480+ # * (mid_point >= intrusion_coord0_pts)
481+ # * (intrusion_coord0_pts > c0_minside_threshold)
482+ # )
483+ # f = (
484+ # (c2_minside_threshold < intrusion_coord2_pts)
485+ # * (intrusion_coord2_pts < c2_maxside_threshold)
486+ # * (mid_point < intrusion_coord0_pts)
487+ # * (intrusion_coord0_pts < c0_maxside_threshold)
488+ # )
489+
490+ # mod_Smin_thresholds = intrusion_coord2_pts - c2_minside_threshold
491+ # mod_Smax_thresholds = intrusion_coord2_pts - c2_maxside_threshold
492+ # mod_Gmin_thresholds = intrusion_coord0_pts - c0_minside_threshold
493+ # mod_Gmax_thresholds = intrusion_coord0_pts - c0_maxside_threshold
494+
495+ # intrusion_sf = (
496+ # a * mod_Smax_thresholds
497+ # + b * abs(mod_Smin_thresholds)
498+ # + c * abs(mod_Gmin_thresholds)
499+ # + d * mod_Gmax_thresholds
500+ # - e * mod_Gmin_thresholds
501+ # + f * mod_Gmax_thresholds
502+ # ) * (
503+ # -1
504+ # multiply by (-1) so intrusions can be used as unconformities
505+
506+ # if self.intrusion_frame.builder.marginal_faults is not None:
507+ # for fault in self.intrusion_frame.builder.marginal_faults.keys():
508+ # intrusion_sf
509+ # self.intrusion_frame.builder.marginal_faults
510+
511+
512+ # self.intrusion_indicator_function = indicator_fx
513+
514+ return intrusion_sf
394515
395516 def evaluate_value_with_SGS (self , points ):
396517
0 commit comments