1 | PROGRAM gpsro_driver
|
---|
2 |
|
---|
3 | IMPLICIT NONE
|
---|
4 |
|
---|
5 |
|
---|
6 | INTEGER, PARAMETER :: nlev=38 ! no. of p levels in state vec.
|
---|
7 | INTEGER, PARAMETER :: nobs=110 ! initially assume 250 m spacing
|
---|
8 | REAL :: roc
|
---|
9 | REAL :: undul
|
---|
10 | REAL :: lat
|
---|
11 | REAL :: pres(nlev),temp(nlev),q(nlev)
|
---|
12 | REAL :: pres_prime(nlev),temp_prime(nlev),q_prime(nlev)
|
---|
13 | REAL :: zg(nlev)
|
---|
14 | REAL :: a(nobs)
|
---|
15 | REAL :: alpha(nobs),alpha_prime(nobs)
|
---|
16 | REAL :: alpha1(nobs),alpha2(nobs)
|
---|
17 | REAL :: pres2(nlev),temp2(nlev),q2(nlev)
|
---|
18 |
|
---|
19 |
|
---|
20 |
|
---|
21 | INTEGER :: i
|
---|
22 |
|
---|
23 |
|
---|
24 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
---|
25 | ! THIS DATA SHOULD BE REPLACED WITH THE UM MODEL INPUT
|
---|
26 | !
|
---|
27 | ! set the atmospheric profile parameters easy values, to get the code
|
---|
28 | ! ruuning. This is where the UM data should go in.
|
---|
29 |
|
---|
30 | ! set latitude to arb. value = 45 degrees
|
---|
31 |
|
---|
32 | lat = 45.0
|
---|
33 |
|
---|
34 | ! set profile data
|
---|
35 |
|
---|
36 | DO i = 1,nlev
|
---|
37 |
|
---|
38 | ! level height
|
---|
39 |
|
---|
40 | zg(i) = REAL(i)*1000.0
|
---|
41 |
|
---|
42 | ! pres (hPa)
|
---|
43 |
|
---|
44 | pres(i) = 1013.0*EXP(-zg(i)/6000.0)
|
---|
45 |
|
---|
46 | pres_prime(i) = 0.001*pres(i)
|
---|
47 |
|
---|
48 | pres2(i) = pres(i)+pres_prime(i)
|
---|
49 |
|
---|
50 |
|
---|
51 | ! temp (K)
|
---|
52 |
|
---|
53 | temp(i) = 270.0 ! isothermal for simplicity
|
---|
54 |
|
---|
55 | temp2(i) = temp(i) + temp_prime(i)
|
---|
56 |
|
---|
57 | ! Specific humidity (g/kg)
|
---|
58 |
|
---|
59 | q(i) = 10.0*EXP(-zg(i)/1500.0)
|
---|
60 |
|
---|
61 | q_prime(i) = 0.01*q(i)
|
---|
62 |
|
---|
63 | q2(i) = q(i) + q_prime(i)
|
---|
64 |
|
---|
65 |
|
---|
66 | ENDDO
|
---|
67 |
|
---|
68 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
---|
69 |
|
---|
70 |
|
---|
71 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
---|
72 | !
|
---|
73 | ! I DON'T THINK YOU'LL NEED TO CHANGE THESE VALUES FOR THE STUDY
|
---|
74 | ! THEY SHOULD BE A REASONABLE STARTING POINT
|
---|
75 | !
|
---|
76 | ! Now set the observation "impact heights". We'll assume that the observation
|
---|
77 | ! profile is always on a set of fixed impact heights, with a 250 m spacing.
|
---|
78 | !
|
---|
79 | ! impact height = impact parameter - radius of curvature
|
---|
80 | !
|
---|
81 | !
|
---|
82 | ! radius of curvature
|
---|
83 |
|
---|
84 | roc = 6371000.0 ! set to mean radius of earth. OK for this study.
|
---|
85 |
|
---|
86 | undul = 0.0 ! ok for this study
|
---|
87 |
|
---|
88 | DO i = 1, nobs
|
---|
89 |
|
---|
90 | a(i) = roc + 3000.0+REAL(i-1)*250.0
|
---|
91 |
|
---|
92 | ENDDO
|
---|
93 | !
|
---|
94 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
---|
95 |
|
---|
96 | ! The routine that forward models the bending angles
|
---|
97 |
|
---|
98 | CALL alpha_optl(nlev, & ! no. of model levs (=38)
|
---|
99 | nobs, & ! no. of bending angles in profile
|
---|
100 | roc, & ! radius of curv.
|
---|
101 | undul, & ! undulation (set to 0.0)
|
---|
102 | lat, & ! latitude of ob. location (degrees)
|
---|
103 | pres, & ! pressure on mod levels (hPa)
|
---|
104 | pres_prime, &
|
---|
105 | temp, & ! temp on model levels
|
---|
106 | temp_prime, &
|
---|
107 | q, & ! specific humidity (g/kg)
|
---|
108 | q_prime, &
|
---|
109 | zg, & ! geopotential height of model levels (m)
|
---|
110 | a, & ! impact parameters
|
---|
111 | alpha, & ! **OUTPUT** bending angles PROFILE
|
---|
112 | alpha_prime) ! **OUTPUT** bending angle perts PROFILE
|
---|
113 |
|
---|
114 |
|
---|
115 | CALL alpha_op(nlev, & ! no. of model levs (=38)
|
---|
116 | nobs, & ! no. of bending angles in profile
|
---|
117 | roc, & ! radius of curv.
|
---|
118 | undul, & ! undulation (set to 0.0)
|
---|
119 | lat, & ! latitude of ob. location (degrees)
|
---|
120 | pres, & ! pressure on mod levels (hPa)
|
---|
121 | temp, & ! temp on model levels
|
---|
122 | q, & ! specific humidity (g/kg)
|
---|
123 | zg, & ! geopotential height of model levels (m)
|
---|
124 | a, & ! impact parameters
|
---|
125 | alpha1) ! **OUTPUT** bending angles PROFILE
|
---|
126 |
|
---|
127 |
|
---|
128 |
|
---|
129 | CALL alpha_op(nlev, & ! no. of model levs (=38)
|
---|
130 | nobs, & ! no. of bending angles in profile
|
---|
131 | roc, & ! radius of curv.
|
---|
132 | undul, & ! undulation (set to 0.0)
|
---|
133 | lat, & ! latitude of ob. location (degrees)
|
---|
134 | pres2, & ! pressure on mod levels (hPa)
|
---|
135 | temp2, & ! temp on model levels
|
---|
136 | q2, & ! specific humidity (g/kg)
|
---|
137 | zg, & ! geopotential height of model levels (m)
|
---|
138 | a, & ! impact parameters
|
---|
139 | alpha2) ! **OUTPUT** bending angles PROFILE
|
---|
140 |
|
---|
141 |
|
---|
142 |
|
---|
143 | DO i = 1,nobs
|
---|
144 |
|
---|
145 | write (6,'(i4,3e16.6)') i,a(i)-roc,alpha_prime(i),(alpha2(i)-alpha1(i))
|
---|
146 |
|
---|
147 | ENDDO
|
---|
148 |
|
---|
149 |
|
---|
150 | END
|
---|