m_tecfld.F90
1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
module m_tecfld
contains
subroutine tecfld(fname,ref,est,var,dz,dt)
use mod_dimensions
use mod_states
implicit none
character(len=*), intent(in) :: fname
type(states), intent(in), dimension(ndim) :: ref,est,var
real, intent(in) :: dz
real, intent(in) :: dt
character*4 tag
integer ii,jj,i,j
ii=kdim
jj=ndim
open(10,file='tec'//fname//'.dat',status='unknown')
write(10,*)'TITLE = "',fname,'"'
write(10,*)'VARIABLES = "i" "j" "depth" "time" "ref-N" "ref-P" "ref-H"&
& "est-N" "est-P" "est-H"&
& "var-N" "var-P" "var-H"&
& "std-N" "std-P" "std-H"&
& "res-N" "res-P" "res-H"'
write(10,'(a,i3,a,i3,a)')' ZONE F=BLOCK, I=',ii,', J=',jj,', K=1'
! Positions in Grid index
write(10,'(30I4)')((i,i=1,ii),j=1,jj)
write(10,'(30I4)')((j,i=1,ii),j=1,jj)
! Positions in Depth and Time
write(10,900)((float(i-1)*dz,i=1,ii),j=1,jj)
write(10,900)((float(j-1)*dt,i=1,ii),j=1,jj)
! N,P,H - reference sol
write(10,900)((ref(j)%N(i),i=1,ii),j=1,jj)
write(10,900)((ref(j)%P(i),i=1,ii),j=1,jj)
write(10,900)((ref(j)%H(i),i=1,ii),j=1,jj)
! N,P,H - estimate
write(10,900)((est(j)%N(i),i=1,ii),j=1,jj)
write(10,900)((est(j)%P(i),i=1,ii),j=1,jj)
write(10,900)((est(j)%H(i),i=1,ii),j=1,jj)
! N,P,H - variance
write(10,900)((var(j)%N(i),i=1,ii),j=1,jj)
write(10,900)((var(j)%P(i),i=1,ii),j=1,jj)
write(10,900)((var(j)%H(i),i=1,ii),j=1,jj)
! N,P,H - sqrt(variance)
write(10,900)((sqrt(var(j)%N(i)),i=1,ii),j=1,jj)
write(10,900)((sqrt(var(j)%P(i)),i=1,ii),j=1,jj)
write(10,900)((sqrt(var(j)%H(i)),i=1,ii),j=1,jj)
! N,P,H - estimate-ref
write(10,900)((abs(est(j)%N(i)-ref(j)%N(i)),i=1,ii),j=1,jj)
write(10,900)((abs(est(j)%P(i)-ref(j)%P(i)),i=1,ii),j=1,jj)
write(10,900)((abs(est(j)%H(i)-ref(j)%H(i)),i=1,ii),j=1,jj)
close(10)
900 format(10(1x,e12.5))
end subroutine tecfld
end module m_tecfld