@@ -20,11 +20,11 @@ module test_drive_poisson
20
20
! > inp test inputs
21
21
type :: inp_inputs_t
22
22
character (len= :), allocatable :: data_filename
23
- type (mesh_scalars_t) :: mesh_scalars
24
23
end type inp_inputs_t
25
24
26
25
! > inp test expected outputs
27
26
type :: inp_expected_outputs_t
27
+ type (mesh_scalars_t) :: mesh_scalars
28
28
type (mesh_vectors_t) :: mesh_vectors
29
29
end type inp_expected_outputs_t
30
30
@@ -40,6 +40,13 @@ module test_drive_poisson
40
40
real :: nodal_value_of_f(mxp)
41
41
end type pcg_expected_outputs_t
42
42
43
+ ! > out test inputs
44
+ type :: out_inputs_t
45
+ type (mesh_scalars_t) :: mesh_scalars
46
+ type (mesh_vectors_t) :: mesh_vectors
47
+ real :: nodal_value_of_f(mxp)
48
+ end type out_inputs_t
49
+
43
50
contains
44
51
45
52
! > Collect all test in this module into a single test suite
@@ -98,7 +105,8 @@ subroutine verify_inp(error, inputs, expected_outputs)
98
105
type (inp_inputs_t), intent (in ) :: inputs
99
106
type (inp_expected_outputs_t), intent (in ) :: expected_outputs
100
107
101
- integer :: actual_element_to_node(3 ,mxp), actual_vb_index(mxe), actual_boundary_node_num(2 ,mxb), &
108
+ integer :: actual_num_nodes, actual_num_elements, actual_num_boundary_points, &
109
+ actual_element_to_node(3 ,mxp), actual_vb_index(mxe), actual_boundary_node_num(2 ,mxb), &
102
110
actual_num_side_nodes(4 ,mxb), file_io = 123 , i, j
103
111
real :: actual_vb(3 ,mxc), actual_vb1(mxc), actual_vb2(mxc), actual_coordinates(2 , mxp)
104
112
character (len= 200 ) :: failure_message
@@ -107,21 +115,31 @@ subroutine verify_inp(error, inputs, expected_outputs)
107
115
! Open the file ready to be read
108
116
call open_file(inputs% data_filename, ' old' , file_io)
109
117
110
- call inp( &
111
- actual_element_to_node, &
112
- actual_vb_index, &
113
- actual_coordinates, &
114
- actual_boundary_node_num, &
115
- actual_num_side_nodes, &
116
- actual_vb, &
117
- actual_vb1, &
118
- actual_vb2, &
119
- file_io &
118
+ call inp( &
119
+ actual_num_nodes, &
120
+ actual_num_elements, &
121
+ actual_num_boundary_points, &
122
+ actual_element_to_node, &
123
+ actual_vb_index, &
124
+ actual_coordinates, &
125
+ actual_boundary_node_num, &
126
+ actual_num_side_nodes, &
127
+ actual_vb, &
128
+ actual_vb1, &
129
+ actual_vb2, &
130
+ file_io &
120
131
)
121
132
122
133
close (file_io)
123
134
124
- do i = 1 , inputs% mesh_scalars% num_elements
135
+ call check(error, actual_num_nodes, expected_outputs% mesh_scalars% num_nodes)
136
+ if (allocated (error)) return
137
+ call check(error, actual_num_elements, expected_outputs% mesh_scalars% num_elements)
138
+ if (allocated (error)) return
139
+ call check(error, actual_num_boundary_points, expected_outputs% mesh_scalars% num_boundary_points)
140
+ if (allocated (error)) return
141
+
142
+ do i = 1 , expected_outputs% mesh_scalars% num_elements
125
143
do j = 1 , 3
126
144
write (failure_message,' (a,i1,a,i1,a,i2,a,i2)' ) " Unexpected value for element_to_node(" , j, " ," , i, " ), got " , actual_element_to_node(j, i), " expected " , expected_outputs% mesh_vectors% element_to_node(j, i)
127
145
call check(error, actual_element_to_node(j, i), expected_outputs% mesh_vectors% element_to_node(j, i), failure_message)
@@ -133,15 +151,15 @@ subroutine verify_inp(error, inputs, expected_outputs)
133
151
if (allocated (error)) return
134
152
end do
135
153
136
- do i = 1 , inputs % mesh_scalars% num_nodes
154
+ do i = 1 , expected_outputs % mesh_scalars% num_nodes
137
155
do j = 1 , 2
138
156
write (failure_message,' (a,i1,a,i1,a,f5.2,a,f5.2)' ) " Unexpected value for coordinates(" , j, " ," , i, " ), got " , actual_coordinates(j, i), " expected " , expected_outputs% mesh_vectors% coordinates(j, i)
139
157
call check(error, actual_coordinates(j, i), expected_outputs% mesh_vectors% coordinates(j, i), failure_message, thr= threshold)
140
158
if (allocated (error)) return
141
159
end do
142
160
end do
143
161
144
- do i = 1 , inputs % mesh_scalars% num_boundary_points
162
+ do i = 1 , expected_outputs % mesh_scalars% num_boundary_points
145
163
do j = 1 , 2
146
164
write (failure_message,' (a,i1,a,i1,a,i2,a,i2)' ) " Unexpected value for boundary_node_num(" , j, " ," , i, " ), got " , actual_boundary_node_num(j, i), " expected " , expected_outputs% mesh_vectors% boundary_node_num(j, i)
147
165
call check(error, actual_boundary_node_num(j, i), expected_outputs% mesh_vectors% boundary_node_num(j, i), failure_message)
@@ -155,21 +173,21 @@ subroutine verify_inp(error, inputs, expected_outputs)
155
173
end do
156
174
end do
157
175
158
- do i = 1 , inputs % mesh_scalars% num_sets
176
+ do i = 1 , expected_outputs % mesh_scalars% num_sets
159
177
do j = 1 , 3
160
178
write (failure_message,' (a,i1,a,i1,a,f5.2,a,f5.2)' ) " Unexpected value for vb(" , j, " ," , i, " ), got " , actual_vb(j, i), " expected " , expected_outputs% mesh_vectors% vb(j, i)
161
179
call check(error, actual_vb(j, i), expected_outputs% mesh_vectors% vb(j, i), failure_message, thr= threshold)
162
180
if (allocated (error)) return
163
181
end do
164
182
end do
165
183
166
- do i = 1 , inputs % mesh_scalars% num_dirichlet_boundary_conditions
184
+ do i = 1 , expected_outputs % mesh_scalars% num_dirichlet_boundary_conditions
167
185
write (failure_message,' (a,i1,a,f5.2,a,f5.2)' ) " Unexpected value for vb1(" , i, " ), got " , actual_vb1(i), " expected " , expected_outputs% mesh_vectors% vb1(i)
168
186
call check(error, actual_vb1(i), expected_outputs% mesh_vectors% vb1(i), failure_message, thr= threshold)
169
187
if (allocated (error)) return
170
188
end do
171
189
172
- do i = 1 , inputs % mesh_scalars% num_neumann_boundary_conditions
190
+ do i = 1 , expected_outputs % mesh_scalars% num_neumann_boundary_conditions
173
191
write (failure_message,' (a,i1,a,f5.2,a,f5.2)' ) " Unexpected value for vb2(" , i, " ), got " , actual_vb2(i), " expected " , expected_outputs% mesh_vectors% vb2(i)
174
192
call check(error, actual_vb2(i), expected_outputs% mesh_vectors% vb2(i), failure_message, thr= threshold)
175
193
if (allocated (error)) return
@@ -183,7 +201,7 @@ subroutine test_inp_15_05(error)
183
201
type (inp_inputs_t) :: inputs
184
202
type (inp_expected_outputs_t) :: expected_outputs
185
203
186
- call get_15_05_mesh_values(inputs% data_filename, inputs % mesh_scalars, expected_outputs% mesh_vectors)
204
+ call get_15_05_mesh_values(inputs% data_filename, expected_outputs % mesh_scalars, expected_outputs% mesh_vectors)
187
205
188
206
call verify_inp(error, inputs, expected_outputs)
189
207
@@ -202,16 +220,19 @@ subroutine verify_pcg(error, inputs, expected_outputs)
202
220
real :: threshold = 1e-06
203
221
integer :: i
204
222
205
- call pcg( &
206
- inputs% mesh_vectors% element_to_node, &
207
- inputs% mesh_vectors% vb_index, &
208
- inputs% mesh_vectors% coordinates, &
209
- inputs% mesh_vectors% boundary_node_num, &
210
- inputs% mesh_vectors% num_side_nodes, &
211
- inputs% mesh_vectors% vb, &
212
- inputs% mesh_vectors% vb1, &
213
- inputs% mesh_vectors% vb2, &
214
- actual_nodal_value_of_f &
223
+ call pcg(&
224
+ inputs% mesh_scalars% num_nodes, &
225
+ inputs% mesh_scalars% num_elements, &
226
+ inputs% mesh_scalars% num_boundary_points, &
227
+ inputs% mesh_vectors% element_to_node, &
228
+ inputs% mesh_vectors% vb_index, &
229
+ inputs% mesh_vectors% coordinates, &
230
+ inputs% mesh_vectors% boundary_node_num, &
231
+ inputs% mesh_vectors% num_side_nodes, &
232
+ inputs% mesh_vectors% vb, &
233
+ inputs% mesh_vectors% vb1, &
234
+ inputs% mesh_vectors% vb2, &
235
+ actual_nodal_value_of_f &
215
236
)
216
237
217
238
! verify outputs
@@ -237,4 +258,15 @@ subroutine test_pcg_15_05(error)
237
258
238
259
deallocate (inputs% data_filename)
239
260
end subroutine test_pcg_15_05
261
+
262
+ subroutine verify_out (error , inputs , expected_outputs )
263
+ implicit none
264
+ type (error_type), allocatable , intent (out ) :: error
265
+
266
+ type (inp_inputs_t), intent (in ) :: inputs
267
+ type (inp_expected_outputs_t), intent (in ) :: expected_outputs
268
+
269
+ ! Verification code for the out subroutine
270
+ ! This is a placeholder for the actual verification code
271
+ end subroutine verify_out
240
272
end module
0 commit comments