@@ -229,7 +229,9 @@ def evaluate_gradient(self, locations):
229229 except :
230230 logger .error ("nan slicing " )
231231 # need to scale with fault displacement
232- v [mask , :] = self .__getitem__ (0 ).evaluate_gradient (locations [mask , :])
232+ v [mask , :] = self .__getitem__ (1 ).evaluate_gradient (locations [mask , :])
233+ scale = self .displacementfeature .evaluate_value (locations [mask , :])
234+ v [mask , :] *= scale [:, None ]
233235 return v
234236
235237 def evaluate_displacement (self , points ):
@@ -458,3 +460,42 @@ def add_abutting_fault(self, abutting_fault_feature, positive=None):
458460 )
459461 self .abut [abutting_fault_feature .name ] = abutting_region
460462 self .__getitem__ (0 ).add_region (abutting_region )
463+
464+ def save (self , filename , scalar_field = True , slip_vector = True , surface = True ):
465+ """
466+ Save the fault to a file
467+
468+ Parameters
469+ ----------
470+ filename - str
471+ filename to save to
472+
473+ Returns
474+ -------
475+
476+ """
477+ filename = str (filename )
478+ ext = filename .split ("." )[- 1 ]
479+ info = ''
480+ if scalar_field :
481+ if ext == '.geoh5' :
482+ info = ''
483+ else :
484+ info = '_scalar_field'
485+ a = self .features [0 ].scalar_field ()
486+ a .merge (self .features [1 ].scalar_field ())
487+ a .merge (self .features [2 ].scalar_field ())
488+ a .merge (self .displacementfeature .scalar_field ())
489+ a .save (f'{ filename } { info } .{ ext } ' )
490+ if slip_vector :
491+ if ext == '.geoh5' :
492+ info = ''
493+ else :
494+ info = '_slip_vector'
495+ self .vector_field ().save (f'{ filename } { info } .{ ext } ' )
496+ if surface :
497+ if ext == '.geoh5' :
498+ info = ''
499+ else :
500+ info = '_surface'
501+ self .surfaces ([0 ])[0 ].save (f'{ filename } { info } .{ ext } ' )
0 commit comments