@@ -21,13 +21,16 @@ def test_fault_builder_update_geometry(interpolatortype):
21
21
fault_builder .update_geometry (points )
22
22
23
23
# Check if the origin and maximum are updated correctly
24
- expected_origin = np .array ([0.5 , 0.5 , 0.5 ])
25
- expected_maximum = np .array ([0.7 , 0.7 , 0.7 ])
26
- assert np .allclose (fault_builder .origin , expected_origin )
27
- assert np .allclose (fault_builder .maximum , expected_maximum )
24
+ # Calculate buffer as 10% of the range
25
+ buffer = 0.1 * (np .array ([0.7 , 0.7 , 0.7 ]) - np .array ([0.5 , 0.5 , 0.5 ]))
26
+ expected_origin = np .array ([0.5 , 0.5 , 0.5 ]) - buffer
27
+ expected_maximum = np .array ([0.7 , 0.7 , 0.7 ]) + buffer
28
+ # rtol 1e-2 is 1% relative tolerance
29
+ assert np .allclose (fault_builder .origin , expected_origin ,rtol = 1e-2 )
30
+ assert np .allclose (fault_builder .maximum , expected_maximum , rtol = 1e-2 )
28
31
29
32
30
- def test_fault_builder_create_data_from_geometry (interpolatortype ):
33
+ def test_fault_builder_create_data_from_geometry_with_normals (interpolatortype ):
31
34
# Create a FaultBuilder instance
32
35
bounding_box = BoundingBox ([0 , 0 , 0 ], [1 , 1 , 1 ])
33
36
nelements = 1000
@@ -60,7 +63,59 @@ def test_fault_builder_create_data_from_geometry(interpolatortype):
60
63
# Check if the fault attributes are updated correctly
61
64
expected_fault_normal_vector = np .array ([0 , 1.0 , 0 ])
62
65
expected_fault_slip_vector = np .array ([0.0 , 0.0 , 1.0 ])
63
- # expected_fault_centre = np.array([0.15, 0.6, 1.05])
66
+ expected_fault_centre = np .array ([0.15 , 0.6 , 1.05 ])
67
+ expected_fault_normal_vector /= np .linalg .norm (expected_fault_normal_vector )
68
+ expected_fault_slip_vector /= np .linalg .norm (expected_fault_slip_vector )
69
+ # expected_fault_minor_axis = 0.5
70
+ # expected_fault_major_axis = 1.0
71
+ # expected_fault_intermediate_axis = 1.0
72
+ calculated_fault_normal_vector = fault_builder .fault_normal_vector
73
+ calculated_fault_slip_vector = fault_builder .fault_slip_vector
74
+ calculated_fault_normal_vector /= np .linalg .norm (calculated_fault_normal_vector )
75
+ calculated_fault_slip_vector /= np .linalg .norm (calculated_fault_slip_vector )
76
+ assert np .allclose (calculated_fault_normal_vector , expected_fault_normal_vector )
77
+ assert np .allclose (calculated_fault_slip_vector , expected_fault_slip_vector )
78
+ # assert np.allclose(fault_builder.fault_centre, expected_fault_centre)
79
+ # assert np.isclose(fault_builder.fault_minor_axis, expected_fault_minor_axis)
80
+ # assert np.isclose(fault_builder.fault_major_axis, expected_fault_major_axis)
81
+ # assert np.isclose(fault_builder.fault_intermediate_axis, expected_fault_intermediate_axis)
82
+
83
+
84
+ def test_fault_builder_create_data_from_geometry_without_normals (interpolatortype ):
85
+ # Create a FaultBuilder instance
86
+ bounding_box = BoundingBox ([0 , 0 , 0 ], [1 , 1 , 1 ])
87
+ nelements = 1000
88
+ model = GeologicalModel ([0 , 0 , 0 ], [1 , 1 , 1 ])
89
+ fault_bounding_box_buffer = 0.2
90
+ fault_builder = FaultBuilder (
91
+ interpolatortype , bounding_box , nelements , model , fault_bounding_box_buffer
92
+ )
93
+
94
+ # Create some test data
95
+ fault_frame_data = pd .DataFrame (
96
+ {
97
+ "coord" : [0.0 , 0.0 , 1.0 , 2.0 ],
98
+ "val" : [0.0 , 0.0 , 1.0 , 1.0 ],
99
+ "gx" : [np .nan , np .nan , np .nan , np .nan ],
100
+ "gy" : [np .nan , np .nan , np .nan , np .nan ],
101
+ "gz" : [np .nan , np .nan , np .nan , np .nan ],
102
+ "X" : [0.1 , 0.2 , 0.3 , 0.4 ],
103
+ "Y" : [0.5 , 0.6 , 0.7 , 0.8 ],
104
+ "Z" : [0.9 , 1.0 , 1.1 , 1.2 ],
105
+ "nx" : [np .nan , np .nan , np .nan , np .nan ],
106
+ "ny" : [np .nan , np .nan , np .nan , np .nan ],
107
+ "nz" : [np .nan , np .nan , np .nan , np .nan ],
108
+ }
109
+ )
110
+
111
+ # Call the create_data_from_geometry method
112
+ fault_builder .create_data_from_geometry (fault_frame_data )
113
+ strike_vector = np .array ([- .1 ,- .1 ,0 ])
114
+ strike_vector /= np .linalg .norm (strike_vector )
115
+ expected_fault_normal_vector = np .cross (strike_vector , np .array ([0 , 0 , 1 ]))
116
+ expected_fault_normal_vector /= np .linalg .norm (expected_fault_normal_vector )
117
+ # Check if the fault attributes are updated correctly
118
+ expected_fault_slip_vector = np .cross (expected_fault_normal_vector , [1.0 , 0.0 , 0.0 ])
64
119
expected_fault_normal_vector /= np .linalg .norm (expected_fault_normal_vector )
65
120
expected_fault_slip_vector /= np .linalg .norm (expected_fault_slip_vector )
66
121
# expected_fault_minor_axis = 0.5
0 commit comments