da_read_errfac.inc

References to this file elsewhere.
1 subroutine da_read_errfac(ob_name, f1, f2, f3, f4, f5)
2 
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
6 
7    implicit none
8    
9    character (len=5), intent(in) :: ob_name
10    real, intent(out)             :: f1
11    real, intent(out)             :: f2
12    real, intent(out)             :: f3
13    real, intent(out)             :: f4
14    real, intent(out)             :: f5
15 
16    character (len=5)             :: ob_name1
17    character (len=21)            :: string1
18    character (len=91)            :: string2
19    integer                       :: fac_unit
20    real                          :: d1, d2, d3, d4, d5
21 
22    f1 = 1.0
23    f2 = 1.0
24    f3 = 1.0
25    f4 = 1.0
26    f5 = 1.0
27 
28    call da_get_unit(fac_unit)
29    open(unit=fac_unit, status='old', file = 'wrfvar_run/errfac.dat', iostat=ierr)
30 
31    if (ierr == 0) then
32       do 
33          read(unit=fac_unit,fmt='(1x,a5,a21,a91)')ob_name1, string1, string2
34 
35          if (ob_name == ob_name1 .and. &
36               string1 == ' obs, Error Factor = ') then
37             read(unit=string2(17:31),fmt=*)d1
38             read(unit=string2(32:46),fmt=*)d2
39             read(unit=string2(47:61),fmt=*)d3
40             read(unit=string2(62:76),fmt=*)d4
41             read(unit=string2(77:91),fmt=*)d5
42             if (d1 > 0.0) f1 = d1
43             if (d2 > 0.0) f2 = d2
44             if (d3 > 0.0) f3 = d3
45             if (d4 > 0.0) f4 = d4
46             if (d5 > 0.0) f5 = d5
47 
48             exit
49          else if (ob_name1 == 'Total') then
50             write(unit=message(1),fmt='(a,a)') &
51                ' No Tuning Error factors for ', ob_name
52             write(unit=message(2),fmt='(a)') &
53                ' So setting to 1.0 i.e. default errors.'  
54             call da_warning(__FILE__,__LINE__,message(1:2))
55             exit
56          end if
57       end do     
58    else   
59       call da_warning(__FILE__,__LINE__, &
60          (/"Problem reading errfac.dat - Not tuning ob errors"/))
61    end if
62 
63    close(fac_unit)
64    call da_free_unit(fac_unit)
65 
66 end subroutine da_read_errfac
67 
68