11 integer,
intent(in) :: nobs
12 real(kind_real),
dimension(nobs),
intent(in) :: obsImpH, obsValue
13 integer(c_int),
dimension(nobs),
intent(in) :: QCflags(:)
14 real(kind_real),
dimension(nobs),
intent(out) :: obsErr
15 real(kind_real) :: H_km, missing
22 if (qcflags(i) .eq. 0)
then
24 h_km = obsimph(i)/1000.0_kind_real
26 if ( h_km <= 10.0 )
then
27 obserr(i) = (h_km*1.25 + (10-h_km)*20)/10.0
28 obserr(i) = obserr(i)/100.0*obsvalue(i)
29 else if ( h_km > 10.0 .and. h_km <= 32.0 )
then
30 obserr(i) = 1.25/100.0*obsvalue(i)
43 integer,
intent(in) :: nobs
44 real(kind_real),
dimension(nobs),
intent(in) :: obsImpH, obsValue, obsLat
45 integer(c_int),
dimension(nobs),
intent(in) :: QCflags(:)
46 real(kind_real),
dimension(nobs),
intent(out) :: obsErr
47 real(kind_real):: H_m, missing
48 real(kind_real):: lat_in_rad,trop_proxy,damping_factor,errfac
49 real(kind_real):: max_sfc_error, min_ba_error
59 if (qcflags(i) .eq. 0)
then
62 lat_in_rad = deg2rad * obslat(i)
63 trop_proxy = 8666.66 + 3333.33*cos(2.0*lat_in_rad)
64 damping_factor = 0.66 + cos(lat_in_rad)/3.0
65 errfac = max_sfc_error*damping_factor*(trop_proxy - h_m)/trop_proxy
66 errfac = max(min_ba_error, errfac)
67 obserr(i) = max(obsvalue(i)*errfac/100.0, 3.0*1e-6)
78 integer,
intent(in) :: nobs
79 real(kind_real),
dimension(nobs),
intent(in) :: obsImpH, obsLat
80 integer(c_int),
dimension(nobs),
intent(in) :: obsSaid, QCflags(:)
81 real(kind_real),
dimension(nobs),
intent(out) :: obsErr
82 real(kind_real) :: H_km, missing
90 if (qcflags(i) .eq. 0)
then
92 h_km = obsimph(i)/1000.0_kind_real
93 if( (obssaid(i)==41).or.(obssaid(i)==722).or.(obssaid(i)==723).or. &
94 (obssaid(i)==4).or.(obssaid(i)==42).or.(obssaid(i)==3).or. &
95 (obssaid(i)==5).or.(obssaid(i)==821.or.(obssaid(i)==421)).or. &
96 (obssaid(i)==440).or.(obssaid(i)==43))
then
97 if( abs(obslat(i))>= 40.00 )
then
99 obserr(i)=0.19032 +0.287535 *h_km-0.00260813*h_km**2
101 obserr(i)=-3.20978 +1.26964 *h_km-0.0622538 *h_km**2
105 obserr(i)=-1.87788 +0.354718 *h_km-0.00313189 *h_km**2
107 obserr(i)=-2.41024 +0.806594 *h_km-0.027257 *h_km**2
112 if( abs(obslat(i))>= 40.00 )
then
113 if ( h_km>12.00 )
then
114 obserr(i)=-0.685627 +0.377174 *h_km-0.00421934 *h_km**2
116 obserr(i)=-3.27737 +1.20003 *h_km-0.0558024 *h_km**2
119 if( h_km>18.00 )
then
120 obserr(i)=-2.73867 +0.447663 *h_km-0.00475603 *h_km**2
122 obserr(i)=-3.45303 +0.908216 *h_km-0.0293331 *h_km**2
125 obserr(i) = 0.001 /abs(exp(obserr(i)))
138 integer,
intent(in) :: nobs
139 real(kind_real),
dimension(nobs),
intent(in) :: obsLat, obsZ
140 real(kind_real),
dimension(nobs),
intent(out) :: obsErr
141 integer(c_int),
dimension(nobs),
intent(in) :: QCflags(:)
142 real(kind_real) :: H_km, missing
150 if (qcflags(i) .eq. 0)
then
151 h_km = obsz(i)/1000.0_kind_real
152 if( abs(obslat(i))>= 20.0 )
then
153 obserr(i)=-1.321+0.341*h_km-0.005*h_km**2
156 obserr(i)=2.013-0.060*h_km+0.0045*h_km**2
158 obserr(i)=-1.18+0.058*h_km+0.025*h_km**2
161 obserr(i) = 1.0_kind_real/abs(exp(obserr(i)))