Added big test
[wrffire.git] / standalone / fuel_interp_test_main.F
blob946a64c896da8087dc5efde46c761eeb30bfd032
1         program test
2         use module_fr_sfire_core
3         ! add call to your subroutine here 
4         implicit none
5 real :: time_now
6 integer :: ims,ime,jms,jme,icl,jcl,i,j
7 real,dimension(3,3)::tff,lff,lfn,tign,lfn1,tign1,lfn2,tign2
8 real,dimension(3,3)::real_tff,real_lff
9 real, dimension(5,5)::d
10 real, dimension(5,3)::lfn3,tign3
11 real::tign_err
12 real,dimension(2,2)::rslt
13 real::test1_err,test2_err,test3_err,test4_err,test5_err
14 real::lfn00,lfn01,lfn10,lfn11,tign00,tign01,tign10,tign11,fuel_time_cell
15 real:: Result1,Result2,Result3,Result4,Result5,result
16 !data lfn/2., 1., 0., &
17 !         1., 0.,-1., &
18 !         0.,-1.,-2./
19 time_now=3.
20 ims=1
21 ime=3
22 jms=1
23 jme=3
24 icl=2
25 jcl=2
28 !<<<<<<< HEAD:standalone/fuel_interp_test_main.F
30 !!!!! Test #1
33 !lfn - plane Z=1.5-X;
34 ! tign -- everywhere where lfn>=0, tign=3;
35 ! everywhere where lfn<0, tign=Z+3;
36 data lfn/0.5, -0.5, -1.5, &
37          0.5, -0.5,-1.5, &
38          0.5, -0.5,-1.5/
39 !>>>>>>> origin/jm2/vktest:standalone/fuel_interp_test_main.F
41 data tign/3.0, 2.5, 1.5, &
42           3.0, 2.5, 1.5, &
43           3.0, 2.5, 1.5 /
45 data real_tff/3.0, 2.5, 2.0, &
46           3.0, 2.5, 2.0, &
47           3.0, 2.5, 2.0 /
49 data real_lff/0.0, -0.5, -1.0, &
50           0.0, -0.5, -1.0, &
51           0.0, -0.5, -1.0 /
53 write(*,101)'tign',tign
54 write(*,101)'lfn',lfn
55         print *,"this is fuel_interp_test.exe"
56         call tign_lfn_interpolation(time_now,icl,jcl,ims,ime,jms,jme, &
57                                     tign,lfn,tff,lff)
58 write(*,101)'tff',tff
59 write(*,101)'lff',lff
60 101 format(a/(3f7.3))
62 d=1e20
63 d(1:5:2,1:5:2)=tign
64 d(2:4,2:4)=tff
65 write(*,*)'tign and tff'
66 write(*,'(5f7.3)')d
67 write(*,*)' '
68 d(1:5:2,1:5:2)=lfn
69 d(2:4,2:4)=lff
70 write(*,*)'lfn and lff'
71 write(*,'(5f7.3)')d
72 write(*,*)' '
74         write(*,*)"Real result - calculated result"
75         write(*,*)real_tff-tff
76         test1_err=maxval(abs(real_tff-tff))
77         write(*,*)"test1_err=",test1_err
80 fuel_time_cell= 8.235294 ;
81         write(*,*)"Calculation of fuel_frac over 4 subcells"
82 result=0;
83 do i=1,2
84    do j=1,2
86 write(*,*)'lff',lff(i,j),lff(i,j+1),lff(i+1,j),lff(i+1,j+1)
87 result= result+fuel_left_cell_3(  &
88     lff(i,j),lff(i,j+1),lff(i+1,j),lff(i+1,j+1), &
89     tff(i,j),tff(i,j+1),tff(i+1,j),tff(i+1,j+1),&
90     time_now, fuel_time_cell)
91 write(*,*)'result after tep i and j',result,i,j
92 end do
93 end do
96 !!!! Test #2
98 !=======
99 !lfn - plane Z=4-X-Y;
100 ! tign -- everywhere where lfn>=0, tign=3;
101 ! everywhere where lfn<0, tign=Z+3;
102 data lfn/2.0, 1.0, 0.0, &
103          1.0, 0.0,-1.0, &
104          0.0, -1.0,-2.0/
106 data tign/3.0, 3.0, 3.0, &
107           3.0, 3.0, 2.0, &
108           3.0, 2.0, 1.0 /
110 data real_tff/3.0, 3.0, 3.0, &
111           3.0, 3.0, 2.5, &
112           3.0, 2.5, 2.0 /
114 data real_lff/1.0, 0.5, 0.0, &
115           0.5, 0.0, -0.5, &
116           0.0, -0.5, -1.0 /
118         print *,"this is fuel_interp_test.exe"
119         call tign_lfn_interpolation(time_now,icl,jcl,ims,ime,jms,jme, &
120                                     tign,lfn,tff,lff)
121 write(*,101)'tign',tign
122 write(*,101)'lfn',lfn
123 write(*,101)'tff',tign
124 write(*,101)'lff',lff
126 d=1e20
127 d(1:5:2,1:5:2)=tign
128 d(2:4,2:4)=tff
129 write(*,*)'tign and tff'
130 write(*,'(5f7.3)')d
131 write(*,*)' '
132 d(1:5:2,1:5:2)=lfn
133 d(2:4,2:4)=lff
134 write(*,*)'lfn and lff'
135 write(*,'(5f7.3)')d
136 write(*,*)' '
138         write(*,*)"Real result - calculated result"
139         write(*,*)real_tff-tff
140         test2_err=maxval(abs(real_tff-tff))
141         write(*,*)"test2_err=",test2_err
143 !!!! Test #3
145 !=======
146 !lfn - plane Z=3-X-Y;
147 ! tign -- everywhere where lfn>=0, tign=3;
148 ! everywhere where lfn<0, tign=Z+3;
149 data lfn/1.0, 0.0, -1.0, &
150          0.0, -1.0,-2.0, &
151          -1.0, -2.0,-3.0/
153 data tign/3.0, 3.0, 2.0, &
154           3.0, 2.0, 1.0, &
155           2.0, 1.0, 0.0 /
157 data real_tff/3.0, 2.5, 2.0, &
158           2.5, 2.0, 1.5, &
159           2.0, 1.5, 1.0 /
161 data real_lff/0.0, -0.5, -1.0, &
162           -0.5, -1.0, -1.5, &
163           -1.0, -1.5, -2.0 /
167 print *,"this is fuel_interp_test.exe"
168         call tign_lfn_interpolation(time_now,icl,jcl,ims,ime,jms,jme, &
169                                     tign,lfn,tff,lff)
170 write(*,101)'tign',tign
171 write(*,101)'lfn',lfn
172 write(*,101)'tff',tign
173 write(*,101)'lff',lff
175 d=1e20
176 d(1:5:2,1:5:2)=tign
177 d(2:4,2:4)=tff
178 write(*,*)'tign and tff'
179 write(*,'(5f7.3)')d
180 write(*,*)' '
181 d(1:5:2,1:5:2)=lfn
182 d(2:4,2:4)=lff
183 write(*,*)'lfn and lff'
184 write(*,'(5f7.3)')d
185 write(*,*)' '
187 write(*,*)"Real result - calculated result"
188         write(*,*)real_tff-tff
189 test3_err=maxval(abs(real_tff-tff))
190         write(*,*)"test3_err=",test3_err
192        
194 !!!! Test #4
196 !=======
197 !lfn - plane Z=5-X-Y;
198 ! tign -- everywhere where lfn>=0, tign=3;
199 ! everywhere where lfn<0, tign=Z+3;
200 data lfn/3.0, 2.0, 1.0, &
201          2.0, 1.0, 0.0, &
202          1.0, 0.0,-1.0/
204 data tign/3.0, 3.0, 3.0, &
205           3.0, 3.0, 3.0, &
206           3.0, 3.0, 2.0 /
208 data real_tff/3.0, 3.0, 3.0, &
209           3.0, 3.0, 3.0, &
210           3.0, 3.0, 3.0 /
212 data real_lff/2.0, 1.5, 1.0, &
213           1.5, 1.0, 0.5, &
214           1.0, 0.5, 0.0 /
218 print *,"this is fuel_interp_test.exe"
219         call tign_lfn_interpolation(time_now,icl,jcl,ims,ime,jms,jme, &
220                                     tign,lfn,tff,lff)
221 write(*,101)'tign',tign
222 write(*,101)'lfn',lfn
223 write(*,101)'tff',tign
224 write(*,101)'lff',lff
226 d=1e20
227 d(1:5:2,1:5:2)=tign
228 d(2:4,2:4)=tff
229 write(*,*)'tign and tff'
230 write(*,'(5f7.3)')d
231 write(*,*)' '
232 d(1:5:2,1:5:2)=lfn
233 d(2:4,2:4)=lff
234 write(*,*)'lfn and lff'
235 write(*,'(5f7.3)')d
236 write(*,*)' '
238         write(*,*)"Real result - calculated result"
239         write(*,*)real_tff-tff
240         test4_err=maxval(abs(real_tff-tff))
241         write(*,*)"test4_err=",test4_err
244         write(*,*)" "
246         write(*,*)"test1_err=",test1_err
247         write(*,*)"test2_err=",test2_err
248         write(*,*)"test3_err=",test3_err
249         write(*,*)"test4_err=",test4_err
250         write(*,*)"If all test*_err are equal to 0.0, than the code works &
251                     correctly for this set of tests"
253         write(*,*)"Tests for fuel_left calculation"
255 print*,""
256 print*,""
257 write(*,*)"Test1, result in Matlab u=(-2;0;1) f =0.9169"
259 lfn00=-1.
260 lfn01=-1.
261 lfn10=1.
262 lfn11=1.
263 tign00=1.
264 tign01=1.
265 tign10=2.
266 tign11=2.
267 time_now=2
268 fuel_time_cell= 8.235294 ;
270 result1= fuel_left_cell_3(  &
271     lfn00,lfn01,lfn10,lfn11, &
272     tign00,tign01,tign10,tign11,&
273     time_now, fuel_time_cell)
274 print*,""
276 write(*,*)"lfn",lfn00,lfn01,lfn10,lfn11
277 print*,""
278 write(*,*)"tign",tign00,tign01,tign10,tign11
279 print*,""
280 write(*,*)"Result1=",result1
281 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
283 print*,""
284 print*,""
285 write(*,*)"Test2, result in Matlab u=(1;0;1) f =0.1660"
287 lfn00=-2.
288 lfn01=-2.
289 lfn10=-1.
290 lfn11=-1.
291 tign00=1.
292 tign01=1.
293 tign10=2.
294 tign11=2.
295 time_now=3
296 fuel_time_cell= 8.235294 ;
298 Result2= fuel_left_cell_3(  &
299     lfn00,lfn01,lfn10,lfn11, &
300     tign00,tign01,tign10,tign11,&
301     time_now, fuel_time_cell)
302 print*,""
304 write(*,*)"lfn",lfn00,lfn01,lfn10,lfn11
305 print*,""
306 write(*,*)"tign",tign00,tign01,tign10,tign11
307 print*,""
309 write(*,*)"Result2=",Result2
311 print*,""
312 print*,""
313 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
314 write(*,*)"Test3, result in Matlab u=-(2;0;4) f =0.4538"
316 lfn00=-2.
317 lfn01=-2.
318 lfn10=-4.
319 lfn11=-4.
320 tign00=6.
321 tign01=6.
322 tign10=4.
323 tign11=4.
324 time_now=10
325 fuel_time_cell= 8.235294 ;
327 result3= fuel_left_cell_3(  &
328     lfn00,lfn01,lfn10,lfn11, &
329     tign00,tign01,tign10,tign11,&
330     time_now, fuel_time_cell)
331 print*,""
333 write(*,*)"lfn",lfn00,lfn01,lfn10,lfn11
334 print*,""
335 write(*,*)"tign",tign00,tign01,tign10,tign11
336 print*,""
338 write(*,*)"Result3=",result3
340 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
342 print*,""
343 print*,""
344 write(*,*)"Test4, result in Matlab u=(-4;-4;2) f =0.7891"
346 lfn00=-3.
347 lfn01=-1.
348 lfn10=-1.
349 lfn11=1.
350 tign00=4.
351 tign01=8.
352 tign10=8.
353 tign11=10.
354 time_now=10
355 fuel_time_cell= 8.235294 ;
357 Result4= fuel_left_cell_3(  &
358     lfn00,lfn01,lfn10,lfn11, &
359     tign00,tign01,tign10,tign11,&
360     time_now, fuel_time_cell)
361 print*,""
363 write(*,*)"lfn",lfn00,lfn01,lfn10,lfn11
364 print*,""
365 write(*,*)"tign",tign00,tign01,tign10,tign11
366 print*,""
368 write(*,*)"Result4=",Result4
370 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
372 print*,""
373 print*,""
374 write(*,*)"Test5, result in Matlab u=(-2;-2;3) f =0.9488"
376 lfn00=-1.
377 lfn01=1.
378 lfn10=1.
379 lfn11=3.
380 tign00=1.
381 tign01=2.
382 tign10=2.
383 tign11=2.
384 time_now=2
385 fuel_time_cell= 8.235294 ;
387 Result5= fuel_left_cell_3(  &
388     lfn00,lfn01,lfn10,lfn11, &
389     tign00,tign01,tign10,tign11,&
390     time_now, fuel_time_cell)
391 print*,""
393 write(*,*)"lfn",lfn00,lfn01,lfn10,lfn11
394 print*,""
395 write(*,*)"tign",tign00,tign01,tign10,tign11
396 print*,""
398 write(*,*)"Result5=",Result5
400 print*,""
402 print*,""
403 print*,""
404 print*,""
405 print*,""
406 print*,""
410 write(*,101)'tign',tign
411 write(*,101)'lfn',lfn
412 print*,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
413 print*,"Big test, lfn- plane z=y-2; tign=y tnow=2"
416 time_now=2.
418 !data lfn1/2.0, 1.0, 0.0, &
419 !         1.0, 0.0,-1.0, &
420 !         0.0, -1.0,-2.0/
421 !data tign1/3.0, 3.0, 3.0, &
422 !          3.0, 3.0, 2.0, &
423 !          3.0, 2.0, 1.0 /
424 data lfn1/-1., 0., 1., &
425          -1., 0.,1., &
426          -1., 0.,1./
428 data tign1/1.0, 2., 2., &
429           1.0, 2., 2., &
430           1.0, 2., 2. /
431 print*,time_now
432 write(*,101)'tign',tign1
433 write(*,101)'lfn',lfn1
434 !data real_tff/3.0, 2.5, 2.0, &
435 !          3.0, 2.5, 2.0, &
436 !          3.0, 2.5, 2.0 /
438 !data real_lff/0.0, -0.5, -1.0, &
439 !          0.0, -0.5, -1.0, &
440 !          0.0, -0.5, -1.0 /
441 write(*,*)'icl,jcl',icl,jcl
442         print *,"this is fuel_interp_test.exe"
443         call tign_lfn_interpolation(time_now,icl,jcl,ims,ime,jms,jme, &
444                                     tign1,lfn1,tff,lff)
445 write(*,101)'tign',tign1
446 write(*,101)'lfn',lfn1
447 write(*,101)'tff',tff
448 write(*,101)'lff',lff
450 d=1e20
451 d(1:5:2,1:5:2)=tign1
452 d(2:4,2:4)=tff
453 write(*,*)'tign and tff'
454 write(*,'(5f7.3)')d
455 write(*,*)' '
456 d(1:5:2,1:5:2)=lfn1
457 d(2:4,2:4)=lff
458 write(*,*)'lfn and lff'
459 write(*,'(5f7.3)')d
460 write(*,*)' '
462  !       write(*,*)"Real result - calculated result"
463  !      write(*,*)real_tff-tff
464  !      test1_err=maxval(abs(real_tff-tff))
465  !      write(*,*)"test1_err=",test1_err
468 fuel_time_cell= 8.235294 ;
469         write(*,*)"Calculation of fuel_frac over 4 subcells"
470 result=0;
471 do i=1,2
472    do j=1,2
474 write(*,*)'lff',lff(i,j),lff(i,j+1),lff(i+1,j),lff(i+1,j+1)
475 write(*,*)'tff',tff(i,j),tff(i,j+1),tff(i+1,j),tff(i+1,j+1)
476 rslt(i,j)= fuel_left_cell_3(  &
477     lff(i,j),lff(i,j+1),lff(i+1,j),lff(i+1,j+1), &
478     tff(i,j),tff(i,j+1),tff(i+1,j),tff(i+1,j+1),&
479     time_now, fuel_time_cell)
480 write(*,*)'result after step i and j',rslt(i,j),i,j
481 end do
482 end do
484 write(*,*)'rslt',rslt
486 !!!! Test #2
488 write(*,*)'MAIN TEST #2'
489 time_now=10
490 data lfn3/-1., 0., 1., &
491          -1., 0.,1., &
492          -1., 0.,1., &
493          -1., 0., 1., &
494          -1.,0.,1./
496 data tign3/1.0, 1., 1., &
497           1.0, 1., 2., &
498           2.0, 2., 2.,  &
499           2.,2.,2., &
500           2.,2.,2./
501 print*,time_now
502 write(*,101)'tign',tign3
503 write(*,101)'lfn',lfn3
504 do icl=2,4
505         print *,"this is fuel_interp_test.exe"
506         write(*,*)"icl,jcl",icl,jcl
507   !     call tign_lfn_interpolation(time_now,icl,jcl,ims,ime,jms,jme, &
508   !                                  tign3,lfn3,tff,lff)
509 write(*,101)'tign(icl-1:icl+1,1:3)',tign3(1,1:3)
510 write(*,101)'tign(icl-1:icl+1,1:3)',tign3(2,1)
511 write(*,101)'tign(icl-1:icl+1,1:3)',tign3(2,2)
512 write(*,101)'tign(icl-1:icl+1,1:3)',tign3(2,3)
513 write(*,101)'tign(icl-1:icl+1,1:3)',tign3(3,1)
514 write(*,101)'tign(icl-1:icl+1,1:3)',tign3
515 write(*,101)'lfn',lfn3(icl-1:icl+1,1:3)
516 write(*,101)'tff',tff
517 write(*,101)'lff',lff
519 d=1e20
520 d(1:5:2,1:5:2)=tign3(icl-1:icl+1,1:3)
521 d(2:4,2:4)=tff
522 write(*,*)'tign and tff'
523 write(*,'(5f7.3)')d
524 write(*,*)' '
525 d(1:5:2,1:5:2)=lfn3(icl-1:icl+1,1:3)
526 d(2:4,2:4)=lff
527 write(*,*)'lfn and lff'
528 write(*,'(5f7.3)')d
529 write(*,*)' '
531 fuel_time_cell= 8.235294 ;
532         write(*,*)"Calculation of fuel_frac over 4 subcells"
533 result=0;
534 do i=1,2
535    do j=1,2
538 write(*,*)'lff',lff(i,j),lff(i,j+1),lff(i+1,j),lff(i+1,j+1)
540 result=fuel_left_cell_3(  &
541     lff(i,j),lff(i,j+1),lff(i+1,j),lff(i+1,j+1), &
542     tff(i,j),tff(i,j+1),tff(i+1,j),tff(i+1,j+1),&
543     time_now, fuel_time_cell)
544 write(*,*)'result after step i and j',result,i,j
545 end do
546 end do
547 end do
552  end program test