fUnit 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/{LICENSE → COPYING} +21 -21
- data/README +26 -2
- data/Rakefile +97 -0
- data/docs/html/classes/Funit.html +390 -0
- data/docs/html/classes/Funit/Assertions.html +285 -0
- data/docs/html/classes/Funit/Compiler.html +160 -0
- data/docs/html/classes/Funit/Depend.html +441 -0
- data/docs/html/classes/Funit/TestSuite.html +417 -0
- data/docs/html/created.rid +1 -0
- data/docs/html/files/COPYING.html +563 -0
- data/docs/html/files/README.html +151 -0
- data/docs/html/files/lib/funit/assertions_rb.html +101 -0
- data/docs/html/files/lib/funit/fortran_deps_rb.html +107 -0
- data/docs/html/files/lib/funit/functions_rb.html +101 -0
- data/docs/html/files/lib/funit/test_suite_rb.html +101 -0
- data/docs/html/files/lib/funit_rb.html +111 -0
- data/docs/html/fr_class_index.html +31 -0
- data/docs/html/fr_file_index.html +33 -0
- data/docs/html/fr_method_index.html +59 -0
- data/docs/html/index.html +24 -0
- data/docs/html/rdoc-style.css +208 -0
- data/examples/CFD/FluxFunctions.f90 +35 -0
- data/examples/CFD/FluxFunctionsMT.f90 +336 -0
- data/examples/CFD/FluxFunctionsMT.ftk +49 -0
- data/examples/CFD/Gammas.f90 +8 -0
- data/examples/CFD/GasModel.f90 +17 -0
- data/examples/CFD/GasModelMT.f90 +173 -0
- data/examples/CFD/GasModelMT.ftk +22 -0
- data/examples/CFD/TestRunner +0 -0
- data/examples/CFD/TestRunner.f90 +23 -0
- data/examples/CFD/fluxfunctions.mod +45 -0
- data/examples/CFD/gammas.mod +20 -0
- data/examples/CFD/gasmodel.mod +30 -0
- data/examples/CFD/gasmodelmt.mod +27 -0
- data/examples/StopWatch/StopWatch.f90 +50 -0
- data/examples/StopWatch/StopWatchMT.f90 +343 -0
- data/examples/StopWatch/StopWatchMT.ftk +73 -0
- data/examples/StopWatch/TestRunner +0 -0
- data/examples/StopWatch/TestRunner.f90 +23 -0
- data/examples/StopWatch/stopwatch.mod +34 -0
- data/examples/StopWatch/stopwatchmt.mod +27 -0
- data/lib/funit.rb +1 -6
- data/lib/funit/fortran_deps.rb +112 -0
- data/lib/funit/functions.rb +2 -5
- data/tests/tc_fortran_deps.rb +2 -2
- metadata +73 -22
- data/INSTALL +0 -19
- data/lib/fortran_deps.rb +0 -109
@@ -0,0 +1,35 @@
|
|
1
|
+
! $Id: FluxFunctions.f90 91 2001-11-13 20:46:28Z cvs4bk $
|
2
|
+
module FluxFunctions
|
3
|
+
|
4
|
+
implicit none
|
5
|
+
|
6
|
+
contains
|
7
|
+
|
8
|
+
subroutine CentralFlux( LeftState, RightState, InterfaceFlux )
|
9
|
+
real, intent(in) :: leftState
|
10
|
+
real, intent(in) :: rightState
|
11
|
+
real, intent(out) :: interfaceFlux
|
12
|
+
interfaceFlux = 0.5*(Flux(leftState)+Flux(rightState))
|
13
|
+
end subroutine CentralFlux
|
14
|
+
|
15
|
+
subroutine RoeFlux( LeftState, RightState, InterfaceFlux )
|
16
|
+
real, intent(in) :: leftState
|
17
|
+
real, intent(in) :: rightState
|
18
|
+
real, intent(out) :: interfaceFlux
|
19
|
+
interfaceFlux = 0.5*(Flux(leftState)+Flux(rightState)) &
|
20
|
+
- 0.5*RoeAvg(leftState,rightState)*(rightState-leftState)
|
21
|
+
end subroutine RoeFlux
|
22
|
+
|
23
|
+
function Flux( state )
|
24
|
+
real :: Flux
|
25
|
+
real, intent(in) :: state
|
26
|
+
Flux = 0.5*state**2
|
27
|
+
end function Flux
|
28
|
+
|
29
|
+
function RoeAvg( leftState, rightState )
|
30
|
+
real :: RoeAvg
|
31
|
+
real, intent(in) :: leftState, rightState
|
32
|
+
RoeAvg = 0.5*(leftState+rightState)
|
33
|
+
end function RoeAvg
|
34
|
+
|
35
|
+
end module FluxFunctions
|
@@ -0,0 +1,336 @@
|
|
1
|
+
! FluxFunctionsMT.f90 - a Fortran mobility test suite for FluxFunctions.f90
|
2
|
+
!
|
3
|
+
! [dynamically generated from FluxFunctionsMT.ftk
|
4
|
+
! by funit Ruby script Sun Apr 09 01:08:26 EDT 2006]
|
5
|
+
|
6
|
+
module FluxFunctionsMT
|
7
|
+
|
8
|
+
use FluxFunctions
|
9
|
+
|
10
|
+
implicit none
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
public :: MTFluxFunctions
|
15
|
+
|
16
|
+
logical :: noAssertFailed
|
17
|
+
|
18
|
+
integer :: numTests = 0
|
19
|
+
integer :: numAsserts = 0
|
20
|
+
integer :: numAssertsTested = 0
|
21
|
+
integer :: numFailures = 0
|
22
|
+
|
23
|
+
! $Id: FluxFunctionsTS.ftk 91 2001-11-13 20:46:28Z cvs4bk $
|
24
|
+
|
25
|
+
real :: leftState, rightState, interfaceFlux
|
26
|
+
|
27
|
+
contains
|
28
|
+
|
29
|
+
|
30
|
+
subroutine TestFluxZero
|
31
|
+
|
32
|
+
real :: state
|
33
|
+
state = 0
|
34
|
+
|
35
|
+
! IsEqualWithin assertion
|
36
|
+
numAsserts = numAsserts + 1
|
37
|
+
if (noAssertFailed) then
|
38
|
+
if (.not.( 0+ 0.00001 .ge. Flux(state) &
|
39
|
+
.and. 0- 0.00001 .le. Flux(state))) then
|
40
|
+
print *, " *IsEqualWithin failed* in test FluxZero &
|
41
|
+
&[FluxFunctionsMT.ftk:13]"
|
42
|
+
print *, " ", " Flux(state) (", Flux(state),") is not", 0,"within", 0.00001
|
43
|
+
print *, ""
|
44
|
+
noAssertFailed = .false.
|
45
|
+
numFailures = numFailures + 1
|
46
|
+
else
|
47
|
+
numAssertsTested = numAssertsTested + 1
|
48
|
+
endif
|
49
|
+
endif
|
50
|
+
|
51
|
+
numTests = numTests + 1
|
52
|
+
|
53
|
+
end subroutine TestFluxZero
|
54
|
+
|
55
|
+
|
56
|
+
subroutine TestFluxOne
|
57
|
+
|
58
|
+
real :: state = 1
|
59
|
+
|
60
|
+
! IsEqualWithin assertion
|
61
|
+
numAsserts = numAsserts + 1
|
62
|
+
if (noAssertFailed) then
|
63
|
+
if (.not.( 0.5+ 0.00001 .ge. Flux(state) &
|
64
|
+
.and. 0.5- 0.00001 .le. Flux(state))) then
|
65
|
+
print *, " *IsEqualWithin failed* in test FluxOne &
|
66
|
+
&[FluxFunctionsMT.ftk:18]"
|
67
|
+
print *, " ", " Flux(state) (", Flux(state),") is not", 0.5,"within", 0.00001
|
68
|
+
print *, ""
|
69
|
+
noAssertFailed = .false.
|
70
|
+
numFailures = numFailures + 1
|
71
|
+
else
|
72
|
+
numAssertsTested = numAssertsTested + 1
|
73
|
+
endif
|
74
|
+
endif
|
75
|
+
|
76
|
+
numTests = numTests + 1
|
77
|
+
|
78
|
+
end subroutine TestFluxOne
|
79
|
+
|
80
|
+
|
81
|
+
subroutine TestRoeAvgZero
|
82
|
+
|
83
|
+
|
84
|
+
! IsRealEqual assertion
|
85
|
+
numAsserts = numAsserts + 1
|
86
|
+
if (noAssertFailed) then
|
87
|
+
if (.not.( RoeAvg(0.0+2*spacing(real( RoeAvg(0.0)).ge.0.0), 0 &
|
88
|
+
.and. RoeAvg(0.0-2*spacing(real( RoeAvg(0.0)).le.0.0), 0 )) then
|
89
|
+
print *, " *IsRealEqual failed* in test RoeAvgZero &
|
90
|
+
&[FluxFunctionsMT.ftk:22]"
|
91
|
+
print *, " ", "0.0), 0 (",0.0), 0 ,") is not", RoeAvg(0.0,"within",2*spacing(real( RoeAvg(0.0))
|
92
|
+
print *, ""
|
93
|
+
noAssertFailed = .false.
|
94
|
+
numFailures = numFailures + 1
|
95
|
+
else
|
96
|
+
numAssertsTested = numAssertsTested + 1
|
97
|
+
endif
|
98
|
+
endif
|
99
|
+
|
100
|
+
! IsFalse assertion
|
101
|
+
numAsserts = numAsserts + 1
|
102
|
+
if (noAssertFailed) then
|
103
|
+
if ( RoeAvg(0.0,0.0).ne.1 ) then
|
104
|
+
print *, " *IsFalse failed* in test RoeAvgZero &
|
105
|
+
&[FluxFunctionsMT.ftk:23]"
|
106
|
+
print *, " ", " RoeAvg(0.0,0.0).ne.1 is not false"
|
107
|
+
print *, ""
|
108
|
+
noAssertFailed = .false.
|
109
|
+
numFailures = numFailures + 1
|
110
|
+
else
|
111
|
+
numAssertsTested = numAssertsTested + 1
|
112
|
+
endif
|
113
|
+
endif
|
114
|
+
|
115
|
+
numTests = numTests + 1
|
116
|
+
|
117
|
+
end subroutine TestRoeAvgZero
|
118
|
+
|
119
|
+
|
120
|
+
subroutine TestRoeAvgKnown
|
121
|
+
|
122
|
+
|
123
|
+
! IsRealEqual assertion
|
124
|
+
numAsserts = numAsserts + 1
|
125
|
+
if (noAssertFailed) then
|
126
|
+
if (.not.( RoeAvg(leftState+2*spacing(real( RoeAvg(leftState)).ge.rightState), 0.5 &
|
127
|
+
.and. RoeAvg(leftState-2*spacing(real( RoeAvg(leftState)).le.rightState), 0.5 )) then
|
128
|
+
print *, " *IsRealEqual failed* in test RoeAvgKnown &
|
129
|
+
&[FluxFunctionsMT.ftk:27]"
|
130
|
+
print *, " ", "rightState), 0.5 (",rightState), 0.5 ,") is not", RoeAvg(leftState,"within",2*spacing(real( RoeAvg(leftState))
|
131
|
+
print *, ""
|
132
|
+
noAssertFailed = .false.
|
133
|
+
numFailures = numFailures + 1
|
134
|
+
else
|
135
|
+
numAssertsTested = numAssertsTested + 1
|
136
|
+
endif
|
137
|
+
endif
|
138
|
+
|
139
|
+
! IsTrue assertion
|
140
|
+
numAsserts = numAsserts + 1
|
141
|
+
if (noAssertFailed) then
|
142
|
+
if (.not.( RoeAvg(leftState,rightState).lt.0 )) then
|
143
|
+
print *, " *IsTrue failed* in test RoeAvgKnown &
|
144
|
+
&[FluxFunctionsMT.ftk:28]"
|
145
|
+
print *, " ", " RoeAvg(leftState,rightState).lt.0 is not true"
|
146
|
+
print *, ""
|
147
|
+
noAssertFailed = .false.
|
148
|
+
numFailures = numFailures + 1
|
149
|
+
else
|
150
|
+
numAssertsTested = numAssertsTested + 1
|
151
|
+
endif
|
152
|
+
endif
|
153
|
+
|
154
|
+
numTests = numTests + 1
|
155
|
+
|
156
|
+
end subroutine TestRoeAvgKnown
|
157
|
+
|
158
|
+
|
159
|
+
subroutine TestCentralFluxKnown
|
160
|
+
|
161
|
+
call CentralFlux( leftState, rightState, interfaceFlux )
|
162
|
+
|
163
|
+
! IsEqualWithin assertion
|
164
|
+
numAsserts = numAsserts + 1
|
165
|
+
if (noAssertFailed) then
|
166
|
+
if (.not.( 0.5+ 0.001 .ge. interfaceFlux &
|
167
|
+
.and. 0.5- 0.001 .le. interfaceFlux)) then
|
168
|
+
print *, " *IsEqualWithin failed* in test CentralFluxKnown &
|
169
|
+
&[FluxFunctionsMT.ftk:33]"
|
170
|
+
print *, " ", " interfaceFlux (", interfaceFlux,") is not", 0.5,"within", 0.001
|
171
|
+
print *, ""
|
172
|
+
noAssertFailed = .false.
|
173
|
+
numFailures = numFailures + 1
|
174
|
+
else
|
175
|
+
numAssertsTested = numAssertsTested + 1
|
176
|
+
endif
|
177
|
+
endif
|
178
|
+
|
179
|
+
! IsEqualWithin assertion
|
180
|
+
numAsserts = numAsserts + 1
|
181
|
+
if (noAssertFailed) then
|
182
|
+
if (.not.( 0.5+ 0.00000001 .ge. interfaceFlux &
|
183
|
+
.and. 0.5- 0.00000001 .le. interfaceFlux)) then
|
184
|
+
print *, " *IsEqualWithin failed* in test CentralFluxKnown &
|
185
|
+
&[FluxFunctionsMT.ftk:34]"
|
186
|
+
print *, " ", " interfaceFlux (", interfaceFlux,") is not", 0.5,"within", 0.00000001
|
187
|
+
print *, ""
|
188
|
+
noAssertFailed = .false.
|
189
|
+
numFailures = numFailures + 1
|
190
|
+
else
|
191
|
+
numAssertsTested = numAssertsTested + 1
|
192
|
+
endif
|
193
|
+
endif
|
194
|
+
|
195
|
+
! IsEqual assertion
|
196
|
+
numAsserts = numAsserts + 1
|
197
|
+
if (noAssertFailed) then
|
198
|
+
if (.not.( interfaceFlux== 0.5 )) then
|
199
|
+
print *, " *IsEqual failed* in test CentralFluxKnown &
|
200
|
+
&[FluxFunctionsMT.ftk:35]"
|
201
|
+
print *, " ", " interfaceFlux (", interfaceFlux,") is not", 0.5
|
202
|
+
print *, ""
|
203
|
+
noAssertFailed = .false.
|
204
|
+
numFailures = numFailures + 1
|
205
|
+
else
|
206
|
+
numAssertsTested = numAssertsTested + 1
|
207
|
+
endif
|
208
|
+
endif
|
209
|
+
|
210
|
+
numTests = numTests + 1
|
211
|
+
|
212
|
+
end subroutine TestCentralFluxKnown
|
213
|
+
|
214
|
+
|
215
|
+
subroutine TestRoeFluxExpansionShock
|
216
|
+
|
217
|
+
leftState = -1
|
218
|
+
call RoeFlux( leftState, rightState, interfaceFlux )
|
219
|
+
|
220
|
+
! IsEqual assertion
|
221
|
+
numAsserts = numAsserts + 1
|
222
|
+
if (noAssertFailed) then
|
223
|
+
if (.not.( interfaceFlux== 0 )) then
|
224
|
+
print *, " *IsEqual failed* in test RoeFluxExpansionShock &
|
225
|
+
&[FluxFunctionsMT.ftk:41]"
|
226
|
+
print *, " ", " interfaceFlux (", interfaceFlux,") is not", 0
|
227
|
+
print *, ""
|
228
|
+
noAssertFailed = .false.
|
229
|
+
numFailures = numFailures + 1
|
230
|
+
else
|
231
|
+
numAssertsTested = numAssertsTested + 1
|
232
|
+
endif
|
233
|
+
endif
|
234
|
+
|
235
|
+
numTests = numTests + 1
|
236
|
+
|
237
|
+
end subroutine TestRoeFluxExpansionShock
|
238
|
+
|
239
|
+
|
240
|
+
subroutine TestRoeFluxZero
|
241
|
+
|
242
|
+
rightState = 0
|
243
|
+
call RoeFlux( leftState, rightState, interfaceFlux )
|
244
|
+
|
245
|
+
! IsRealEqual assertion
|
246
|
+
numAsserts = numAsserts + 1
|
247
|
+
if (noAssertFailed) then
|
248
|
+
if (.not.( interfaceFlux+2*spacing(real( interfaceFlux)).ge. 0 &
|
249
|
+
.and. interfaceFlux-2*spacing(real( interfaceFlux)).le. 0 )) then
|
250
|
+
print *, " *IsRealEqual failed* in test RoeFluxZero &
|
251
|
+
&[FluxFunctionsMT.ftk:47]"
|
252
|
+
print *, " ", " 0 (", 0 ,") is not", interfaceFlux,"within",2*spacing(real( interfaceFlux))
|
253
|
+
print *, ""
|
254
|
+
noAssertFailed = .false.
|
255
|
+
numFailures = numFailures + 1
|
256
|
+
else
|
257
|
+
numAssertsTested = numAssertsTested + 1
|
258
|
+
endif
|
259
|
+
endif
|
260
|
+
|
261
|
+
! IsEqual assertion
|
262
|
+
numAsserts = numAsserts + 1
|
263
|
+
if (noAssertFailed) then
|
264
|
+
if (.not.( interfaceFlux== 0 )) then
|
265
|
+
print *, " *IsEqual failed* in test RoeFluxZero &
|
266
|
+
&[FluxFunctionsMT.ftk:48]"
|
267
|
+
print *, " ", " interfaceFlux (", interfaceFlux,") is not", 0
|
268
|
+
print *, ""
|
269
|
+
noAssertFailed = .false.
|
270
|
+
numFailures = numFailures + 1
|
271
|
+
else
|
272
|
+
numAssertsTested = numAssertsTested + 1
|
273
|
+
endif
|
274
|
+
endif
|
275
|
+
|
276
|
+
numTests = numTests + 1
|
277
|
+
|
278
|
+
end subroutine TestRoeFluxZero
|
279
|
+
|
280
|
+
|
281
|
+
subroutine Setup
|
282
|
+
leftState = 0
|
283
|
+
rightState = 1
|
284
|
+
noAssertFailed = .true.
|
285
|
+
end subroutine Setup
|
286
|
+
|
287
|
+
|
288
|
+
subroutine Teardown
|
289
|
+
end subroutine Teardown
|
290
|
+
|
291
|
+
|
292
|
+
subroutine MTFluxFunctions( nTests, nAsserts, nAssertsTested, nFailures )
|
293
|
+
|
294
|
+
integer :: nTests
|
295
|
+
integer :: nAsserts
|
296
|
+
integer :: nAssertsTested
|
297
|
+
integer :: nFailures
|
298
|
+
|
299
|
+
continue
|
300
|
+
|
301
|
+
call Setup
|
302
|
+
call TestFluxZero
|
303
|
+
call Teardown
|
304
|
+
|
305
|
+
call Setup
|
306
|
+
call TestFluxOne
|
307
|
+
call Teardown
|
308
|
+
|
309
|
+
call Setup
|
310
|
+
call TestRoeAvgZero
|
311
|
+
call Teardown
|
312
|
+
|
313
|
+
call Setup
|
314
|
+
call TestRoeAvgKnown
|
315
|
+
call Teardown
|
316
|
+
|
317
|
+
call Setup
|
318
|
+
call TestCentralFluxKnown
|
319
|
+
call Teardown
|
320
|
+
|
321
|
+
call Setup
|
322
|
+
call TestRoeFluxExpansionShock
|
323
|
+
call Teardown
|
324
|
+
|
325
|
+
call Setup
|
326
|
+
call TestRoeFluxZero
|
327
|
+
call Teardown
|
328
|
+
|
329
|
+
nTests = numTests
|
330
|
+
nAsserts = numAsserts
|
331
|
+
nAssertsTested = numAssertsTested
|
332
|
+
nFailures = numFailures
|
333
|
+
|
334
|
+
end subroutine MTFluxFunctions
|
335
|
+
|
336
|
+
end module FluxFunctionsMT
|
@@ -0,0 +1,49 @@
|
|
1
|
+
! $Id: FluxFunctionsTS.ftk 91 2001-11-13 20:46:28Z cvs4bk $
|
2
|
+
|
3
|
+
real :: leftState, rightState, interfaceFlux
|
4
|
+
|
5
|
+
beginsetup
|
6
|
+
leftState = 0
|
7
|
+
rightState = 1
|
8
|
+
endsetup
|
9
|
+
|
10
|
+
beginTest FluxZero
|
11
|
+
real :: state
|
12
|
+
state = 0
|
13
|
+
IsEqualWithin( Flux(state), 0, 0.00001 )
|
14
|
+
endTest
|
15
|
+
|
16
|
+
beginTest FluxOne
|
17
|
+
real :: state = 1
|
18
|
+
IsEqualWithin( Flux(state), 0.5, 0.00001 )
|
19
|
+
endTest
|
20
|
+
|
21
|
+
beginTest RoeAvgZero
|
22
|
+
IsRealEqual( RoeAvg(0.0,0.0), 0 )
|
23
|
+
IsFalse( RoeAvg(0.0,0.0).ne.1 )
|
24
|
+
endTest
|
25
|
+
|
26
|
+
beginTest RoeAvgKnown
|
27
|
+
IsRealEqual( RoeAvg(leftState,rightState), 0.5 )
|
28
|
+
IsTrue( RoeAvg(leftState,rightState).lt.0 )
|
29
|
+
endTest
|
30
|
+
|
31
|
+
beginTest CentralFluxKnown
|
32
|
+
call CentralFlux( leftState, rightState, interfaceFlux )
|
33
|
+
IsEqualWithin( interfaceFlux, 0.5, 0.001 )
|
34
|
+
IsEqualWithin( interfaceFlux, 0.5, 0.00000001 )
|
35
|
+
IsEqual( interfaceFlux, 0.5 )
|
36
|
+
endTest
|
37
|
+
|
38
|
+
beginTest RoeFluxExpansionShock
|
39
|
+
leftState = -1
|
40
|
+
call RoeFlux( leftState, rightState, interfaceFlux )
|
41
|
+
IsEqual( interfaceFlux, 0 )
|
42
|
+
endTest
|
43
|
+
|
44
|
+
beginTest RoeFluxZero
|
45
|
+
rightState = 0
|
46
|
+
call RoeFlux( leftState, rightState, interfaceFlux )
|
47
|
+
IsRealEqual( interfaceFlux, 0 )
|
48
|
+
IsEqual( interfaceFlux, 0 )
|
49
|
+
endTest
|
@@ -0,0 +1,17 @@
|
|
1
|
+
! $Id: GasModel.f90 91 2001-11-13 20:46:28Z cvs4bk $
|
2
|
+
module GasModel
|
3
|
+
|
4
|
+
use Gammas
|
5
|
+
|
6
|
+
implicit none
|
7
|
+
|
8
|
+
contains
|
9
|
+
|
10
|
+
subroutine PerfectP (Density, Energy, Pressure)
|
11
|
+
real, intent(in) :: Density
|
12
|
+
real, intent(in) :: Energy
|
13
|
+
real, intent(out) :: Pressure
|
14
|
+
Pressure = Density * Energy * ( Gamma - 1.0 )
|
15
|
+
end subroutine PerfectP
|
16
|
+
|
17
|
+
end module GasModel
|