Ticket #372: ropp-7.0_SLES11-64bit_intel-ropp-io-read-ncdf.patch
File ropp-7.0_SLES11-64bit_intel-ropp-io-read-ncdf.patch, 20.5 KB (added by , 10 years ago) |
---|
-
ropp_io/ropp/ropp_io_read_ncdf_get.f90
a b 2103 2103 ! BYTE :: readbyte1, readbyte2, readbyte3 ! nagfor doesn't like BYTE 2104 2104 INTEGER(OneByteInt) :: readbyte1, readbyte2, readbyte3 2105 2105 2106 CHARACTER (len = 256) :: dir 2106 CHARACTER (len = 256) :: sdir ! directory to science info in netCDF4 2107 CHARACTER (len = 256) :: ddir ! directory to science/data in netCDF4 2108 CHARACTER (len = 256) :: tdir ! tmp directory for use 2107 2109 2108 2110 REAL(wp), PARAMETER :: g_wmo = 9.80665_wp 2109 2111 REAL(wp), PARAMETER :: epsilon_water = 0.621971_wp … … 2122 2124 2123 2125 REAL(wp) :: lat 2124 2126 2125 ! 6.2 group path for level 1B data 2126 ! -------------------------------- 2127 dir = '/level_1b/'//TRIM(resolution)//'/' 2127 ! 6.2 group path for science, level 1B data 2128 ! ----------------------------------------- 2129 sdir = '/science_data/' 2130 ddir = TRIM(sdir)//'level_1b/'//TRIM(resolution)//'/' 2128 2131 2129 2132 2130 2133 ! 6.3 Header variables … … 2132 2135 2133 2136 ! receiver satellite ID in ROPP format 2134 2137 readstr = ' ' 2135 CALL ncdf_getatt('satellite', readstr) 2136 IF ( readstr == "Metop-A" ) data%leo_id = "META" 2137 IF ( readstr == "Metop-B" ) data%leo_id = "METB" 2138 IF ( readstr == "Metop-C" ) data%leo_id = "METC" 2138 CALL ncdf_getatt("spacecraft", readstr) 2139 IF ( readstr == "M02" ) data%leo_id = "META" 2140 IF ( readstr == "M01" ) data%leo_id = "METB" 2141 IF ( readstr == "M03" ) data%leo_id = "METC" 2142 2139 2143 2140 2144 ! occulting GNSS satellite 2141 CALL ncdf_getvar( '/occultation/prn', readint)2145 CALL ncdf_getvar(TRIM(sdir)//"occultation/prn", readint) 2142 2146 WRITE(data%gns_id,'(A1,I3.3)') 'G', readint 2143 2147 2144 2148 ! station ID unused for EUMETSAT data … … 2151 2155 ! ------------------- 2152 2156 2153 2157 ! Overall nominal / non-nominal 2154 CALL ncdf_getvar("/quality_control/fsi_retrieval_available", readbyte1) 2158 tdir = TRIM(sdir)//'quality_control/' 2159 CALL ncdf_getvar(TRIM(tdir)//"fsi_retrieval_available", readbyte1) 2155 2160 2156 IF (readbyte1 == 0 ) CALL ncdf_getvar( "/quality_control/go_retrieval_available", readbyte1)2161 IF (readbyte1 == 0 ) CALL ncdf_getvar(TRIM(tdir)//"go_retrieval_available", readbyte1) 2157 2162 2158 2163 ! data%PCD = (readbyte1 .ne. 1) 2159 2164 IF (readbyte1 == 0) THEN … … 2171 2176 data%units%overall_qual = "%" 2172 2177 2173 2178 ! open or closed loop data setting 2174 CALL ncdf_getvar( "/quality_control/rs_data_available", readbyte1)2175 CALL ncdf_getvar( "/quality_control/ol_data_available", readbyte2)2179 CALL ncdf_getvar(TRIM(tdir)//"rs_data_available", readbyte1) 2180 CALL ncdf_getvar(TRIM(tdir)//"ol_data_available", readbyte2) 2176 2181 !! IF ((readbyte1) .OR. (readbyte2)) data%PCD = IBSET(data%PCD, PCD_open_loop) - right now we only us RS, not OL 2177 2182 ! IF (readbyte1) data%PCD = IBSET(data%PCD, PCD_open_loop) 2178 2183 IF (readbyte1 /= 0) data%PCD = IBSET(data%PCD, PCD_open_loop) 2179 2184 2180 2185 ! setting or rising 2181 CALL ncdf_getatt( "/occultation/occultation_type", readstr)2186 CALL ncdf_getatt(TRIM(sdir)//"occultation/occultation_type", readstr) 2182 2187 IF (TRIM(readstr) == "rising") data%PCD = IBSET(data%PCD, PCD_rising) 2183 2188 2184 2189 ! closed loop phase measurements okay? 2185 CALL ncdf_getvar( "/quality_control/cl_snr_ca_ok", readbyte1)2186 CALL ncdf_getvar( "/quality_control/cl_snr_p1_ok", readbyte2)2187 CALL ncdf_getvar( "/quality_control/cl_snr_p2_ok", readbyte3)2190 CALL ncdf_getvar(TRIM(tdir)//"cl_snr_ca_ok", readbyte1) 2191 CALL ncdf_getvar(TRIM(tdir)//"cl_snr_p1_ok", readbyte2) 2192 CALL ncdf_getvar(TRIM(tdir)//"cl_snr_p2_ok", readbyte3) 2188 2193 ! IF ((.NOT. readbyte1) .AND. (.NOT. readbyte2) .AND. (.NOT. readbyte3)) data%PCD = IBSET(data%PCD, PCD_phase) 2189 2194 IF ((readbyte1 == 0) .AND. (readbyte2 == 0) .AND. (readbyte3 == 0)) data%PCD = IBSET(data%PCD, PCD_phase) 2190 2195 … … 2193 2198 ! ----------------- 2194 2199 2195 2200 ! start time of occultation 2196 CALL ncdf_getvar('/level_1b/utc_start_absdate', readint) 2197 CALL ncdf_getvar('/level_1b/utc_start_abstime', readreal) 2201 tdir = TRIM(sdir)//"level_1b/" 2202 CALL ncdf_getvar(TRIM(tdir)//"utc_start_absdate", readint) 2203 CALL ncdf_getvar(TRIM(tdir)//"utc_start_abstime", readreal) 2198 2204 2199 2205 ! check that we have the right time 2200 CALL ncdf_getatt( '/level_1b/units', readstr, 'utc_start_absdate')2206 CALL ncdf_getatt(TRIM(tdir)//"units", readstr, 'utc_start_absdate') 2201 2207 IF ( readstr == "days since 2000-01-01 00:00:00.00" ) THEN 2202 2208 CALL abstimetoDT(readint, readreal, data%DTocc) 2203 2209 ELSE … … 2206 2212 ENDIF 2207 2213 2208 2214 ! difference between start time to georef time 2209 CALL ncdf_getvar('/occultation/utc_georef_absdate', readint2) 2210 CALL ncdf_getvar('/occultation/utc_georef_abstime', readreal2) 2215 tdir = TRIM(sdir)//"occultation/" 2216 CALL ncdf_getvar(TRIM(tdir)//"utc_georef_absdate", readint2) 2217 CALL ncdf_getvar(TRIM(tdir)//"utc_georef_abstime", readreal2) 2211 2218 2212 2219 ! FIXME: 1. Is there a simple library call to do this in just one call? 2213 2220 ! 2. This can be negative (georef is determined from orbits, but … … 2227 2234 ! 6.6 Georeferencing 2228 2235 ! ------------------ 2229 2236 2230 CALL ncdf_getvar( '/occultation/latitude', data%georef%lat, units=data%georef%units%lat)2231 CALL ncdf_getvar( '/occultation/longitude', data%georef%lon, units=data%georef%units%lon)2232 CALL ncdf_getvar( '/occultation/undulation', data%georef%Undulation, units=data%georef%units%Undulation)2233 CALL ncdf_getvar( '/occultation/r_curve', data%georef%roc, units=data%georef%units%roc)2234 CALL ncdf_getvar( '/occultation/r_curve_centre_fixed', data%georef%r_coc, units=data%georef%units%r_coc)2235 CALL ncdf_getvar( '/occultation/azimuth_north', data%georef%azimuth, units=data%georef%units%azimuth)2237 CALL ncdf_getvar(TRIM(tdir)//"latitude", data%georef%lat, units=data%georef%units%lat) 2238 CALL ncdf_getvar(TRIM(tdir)//"longitude", data%georef%lon, units=data%georef%units%lon) 2239 CALL ncdf_getvar(TRIM(tdir)//"undulation", data%georef%Undulation, units=data%georef%units%Undulation) 2240 CALL ncdf_getvar(TRIM(tdir)//"r_curve", data%georef%roc, units=data%georef%units%roc) 2241 CALL ncdf_getvar(TRIM(tdir)//"r_curve_centre_fixed", data%georef%r_coc, units=data%georef%units%r_coc) 2242 CALL ncdf_getvar(TRIM(tdir)//"azimuth_north", data%georef%azimuth, units=data%georef%units%azimuth) 2236 2243 2237 2244 ! FIXME: Do we need this? 2238 2245 data%georef%reference_frame%r_coc = "ECF" … … 2247 2254 ! would always have the value 1 when used, but allows to separate data 2248 2255 ! at the reference point from the general level 1a data, which covers the 2249 2256 ! whole occultation 2250 2251 2257 IF ((getbufr) .AND. (getlevel1a)) THEN 2252 2258 2253 2259 CALL message(msg_fatal,"Flags to get bufr and get level 1a data set. This is incompatable.") … … 2257 2263 IF (getbufr) THEN 2258 2264 2259 2265 CALL ropp_io_init(data%Lev1a, 1) 2260 CALL ncdf_getvar( '/occultation/position_rec_fixed', data%Lev1a%r_leo(1,:), &2266 CALL ncdf_getvar(TRIM(tdir)//"position_rec_fixed", data%Lev1a%r_leo(1,:), & 2261 2267 units=data%Lev1a%units%r_leo, range = data%Lev1a%range%r_leo) 2262 CALL ncdf_getvar( '/occultation/velocity_rec', data%Lev1a%v_leo(1,:), &2268 CALL ncdf_getvar(TRIM(tdir)//"velocity_rec", data%Lev1a%v_leo(1,:), & 2263 2269 units=data%Lev1a%units%v_leo, range = data%Lev1a%range%v_leo) 2264 CALL ncdf_getvar( '/occultation/position_gns_fixed', data%Lev1a%r_gns(1,:), &2270 CALL ncdf_getvar(TRIM(tdir)//"position_gns_fixed", data%Lev1a%r_gns(1,:), & 2265 2271 units=data%Lev1a%units%r_gns, range = data%Lev1a%range%r_gns) 2266 CALL ncdf_getvar( '/occultation/velocity_gns', data%Lev1a%v_gns(1,:), &2272 CALL ncdf_getvar(TRIM(tdir)//"velocity_gns", data%Lev1a%v_gns(1,:), & 2267 2273 units=data%Lev1a%units%v_gns, range = data%Lev1a%range%v_gns) 2268 2274 2269 2275 ! FIXME: Do we need this? … … 2280 2286 ! in ROPP netCDF file if required! 2281 2287 ! - data appears when doing a bufr2ropp, however seems not to be 2282 2288 ! part of the bufr content. 2283 !CALL ncdf_getvar('/level_1a/closed_loop/snr_ca_mean', data%Lev1a%snr_L1ca(1), units=data%Lev1a%units%snr, range = data%Lev1a%range%snr) 2284 !CALL ncdf_getvar('/level_1a/closed_loop/snr_p1_mean', data%Lev1a%snr_L1p(1), units=data%Lev1a%units%snr, range = data%Lev1a%range%snr) 2285 !CALL ncdf_getvar('/level_1a/closed_loop/snr_p2_mean', data%Lev1a%snr_L2p(1), units=data%Lev1a%units%snr, range = data%Lev1a%range%snr) 2289 !tdir = TRIM(sdir)//"level_1a/closed_loop/" 2290 !CALL ncdf_getvar(TRIM(tdir)//"snr_ca_mean", data%Lev1a%snr_L1ca(1), units=data%Lev1a%units%snr, range = data%Lev1a%range%snr) 2291 !CALL ncdf_getvar(TRIM(tdir)//"snr_p1_mean", data%Lev1a%snr_L1p(1), units=data%Lev1a%units%snr, range = data%Lev1a%range%snr) 2292 !CALL ncdf_getvar(TRIM(tdir)//"snr_p2_mean", data%Lev1a%snr_L2p(1), units=data%Lev1a%units%snr, range = data%Lev1a%range%snr) 2286 2293 2287 2294 ! data is available 2288 2295 data%Lev1a%Missing = .FALSE. … … 2304 2311 ! For now the approach is to read and combine closed loop and raw sampling records. 2305 2312 ! This and related stuff is Kjartan's update 2306 2313 2307 IF (ncdf_isvar('/level_1a/closed_loop/dtime')) THEN ! read CL data 2314 tdir = TRIM(sdir)//"level_1a/closed_loop/" 2315 IF (ncdf_isvar(TRIM(tdir)//"dtime")) THEN ! read CL data 2308 2316 2309 CALL ncdf_getsize( '/level_1a/closed_loop/dtime', n_cl, dim = 1)2317 CALL ncdf_getsize(TRIM(tdir)//"dtime", n_cl, dim = 1) 2310 2318 CALL ropp_io_init(data_cl%Lev1a, n_cl) 2311 2319 2312 2320 ! Time … … 2315 2323 ! with changing values. Since default behaviour is to assume seconds the data are actually read correctly but the problem causes 2316 2324 ! a warning 2317 2325 2318 CALL ncdf_getvar( '/level_1a/closed_loop/dtime', data_cl%Lev1a%dtime) !, units=data_cl%Lev1a%units%dtime)2326 CALL ncdf_getvar(TRIM(tdir)//"dtime", data_cl%Lev1a%dtime) !, units=data_cl%Lev1a%units%dtime) 2319 2327 2320 2328 ! Position and velocity 2321 2329 … … 2324 2332 ALLOCATE(r_gns(3,n_cl)) 2325 2333 ALLOCATE(v_gns(3,n_cl)) 2326 2334 2327 CALL ncdf_getvar( '/level_1a/closed_loop/r_transmitter', r_gns, units=data_cl%Lev1a%units%r_gns)2328 CALL ncdf_getvar( '/level_1a/closed_loop/v_transmitter', v_gns, units=data_cl%Lev1a%units%v_gns)2329 CALL ncdf_getvar( '/level_1a/closed_loop/r_receiver', r_leo, units=data_cl%Lev1a%units%r_leo)2330 CALL ncdf_getvar( '/level_1a/closed_loop/v_receiver', v_leo, units=data_cl%Lev1a%units%v_leo)2335 CALL ncdf_getvar(TRIM(tdir)//"r_transmitter", r_gns, units=data_cl%Lev1a%units%r_gns) 2336 CALL ncdf_getvar(TRIM(tdir)//"v_transmitter", v_gns, units=data_cl%Lev1a%units%v_gns) 2337 CALL ncdf_getvar(TRIM(tdir)//"r_receiver", r_leo, units=data_cl%Lev1a%units%r_leo) 2338 CALL ncdf_getvar(TRIM(tdir)//"v_receiver", v_leo, units=data_cl%Lev1a%units%v_leo) 2331 2339 2332 2340 DO j=1,n_cl 2333 2341 data_cl%Lev1a%r_gns(j,:) = r_gns(:,j) … … 2343 2351 2344 2352 ! Phase and amplitude 2345 2353 2346 CALL ncdf_getvar( '/level_1a/closed_loop/exphase_ca', data_cl%Lev1a%phase_L1, units=data_cl%Lev1a%units%phase)2347 CALL ncdf_getvar( '/level_1a/closed_loop/exphase_p2', data_cl%Lev1a%phase_L2, units=data_cl%Lev1a%units%phase)2348 CALL ncdf_getvar( '/level_1a/closed_loop/snr_ca', data_cl%Lev1a%snr_L1ca, units=data_cl%Lev1a%units%snr)2349 CALL ncdf_getvar( '/level_1a/closed_loop/snr_p1', data_cl%Lev1a%snr_L1p, units=data_cl%Lev1a%units%snr)2350 CALL ncdf_getvar( '/level_1a/closed_loop/snr_p2', data_cl%Lev1a%snr_L2p, units=data_cl%Lev1a%units%snr)2354 CALL ncdf_getvar(TRIM(tdir)//"exphase_ca", data_cl%Lev1a%phase_L1, units=data_cl%Lev1a%units%phase) 2355 CALL ncdf_getvar(TRIM(tdir)//"exphase_p2", data_cl%Lev1a%phase_L2, units=data_cl%Lev1a%units%phase) 2356 CALL ncdf_getvar(TRIM(tdir)//"snr_ca", data_cl%Lev1a%snr_L1ca, units=data_cl%Lev1a%units%snr) 2357 CALL ncdf_getvar(TRIM(tdir)//"snr_p1", data_cl%Lev1a%snr_L1p, units=data_cl%Lev1a%units%snr) 2358 CALL ncdf_getvar(TRIM(tdir)//"snr_p2", data_cl%Lev1a%snr_L2p, units=data_cl%Lev1a%units%snr) 2351 2359 2352 2360 ! Closed loop lost carrier flag (looking for data gaps) 2353 2361 … … 2382 2390 2383 2391 n_rs = 0 ! will be set differently if RS data is available 2384 2392 2385 CALL ncdf_getvar( "/quality_control/rs_data_available", readbyte1)2393 CALL ncdf_getvar(TRIM(sdir)//"quality_control/rs_data_available", readbyte1) 2386 2394 2387 2395 IF (readbyte1 == 1) THEN 2388 2396 2389 IF (ncdf_isvar('/level_1a/raw_sampling/dtime')) THEN ! read RS data 2397 tdir = TRIM(sdir)//"level_1a/raw_sampling/" 2398 IF (ncdf_isvar(TRIM(tdir)//"dtime")) THEN ! read RS data 2390 2399 2391 2400 data%PCD = IBSET(data%PCD, PCD_open_loop) 2392 CALL ncdf_getsize( '/level_1a/raw_sampling/dtime', n_rs, dim = 1)2401 CALL ncdf_getsize(TRIM(tdir)//'dtime', n_rs, dim = 1) 2393 2402 CALL ropp_io_init(data_rs%Lev1a, n_rs) 2394 2403 2395 2404 ! Time … … 2398 2407 ! with changing values. Since default behaviour is to assume seconds in data are actually read correctly but the problem causes 2399 2408 ! a warning 2400 2409 2401 CALL ncdf_getvar( '/level_1a/raw_sampling/dtime', data_rs%Lev1a%dtime) !, units=data_rs%Lev1a%units%dtime)2410 CALL ncdf_getvar(TRIM(tdir)//'dtime', data_rs%Lev1a%dtime) !, units=data_rs%Lev1a%units%dtime) 2402 2411 2403 2412 ! Position and velocity 2404 2413 … … 2407 2416 ALLOCATE(r_gns(3,n_rs)) 2408 2417 ALLOCATE(v_gns(3,n_rs)) 2409 2418 2410 CALL ncdf_getvar( '/level_1a/raw_sampling/r_transmitter', r_gns, units=data_rs%Lev1a%units%r_gns)2411 CALL ncdf_getvar( '/level_1a/raw_sampling/v_transmitter', v_gns, units=data_rs%Lev1a%units%v_gns)2412 CALL ncdf_getvar( '/level_1a/raw_sampling/r_receiver', r_leo, units=data_rs%Lev1a%units%r_leo)2413 CALL ncdf_getvar( '/level_1a/raw_sampling/v_receiver', v_leo, units=data_rs%Lev1a%units%v_leo)2419 CALL ncdf_getvar(TRIM(tdir)//'r_transmitter', r_gns, units=data_rs%Lev1a%units%r_gns) 2420 CALL ncdf_getvar(TRIM(tdir)//'v_transmitter', v_gns, units=data_rs%Lev1a%units%v_gns) 2421 CALL ncdf_getvar(TRIM(tdir)//'r_receiver', r_leo, units=data_rs%Lev1a%units%r_leo) 2422 CALL ncdf_getvar(TRIM(tdir)//'v_receiver', v_leo, units=data_rs%Lev1a%units%v_leo) 2414 2423 2415 2424 DO j=1,n_rs 2416 2425 data_rs%Lev1a%r_gns(j,:) = r_gns(:,j) … … 2430 2439 ALLOCATE(rs_navbit_ext(n_rs)) 2431 2440 ALLOCATE(tracking_state(n_rs)) 2432 2441 2433 CALL ncdf_getvar( '/level_1a/raw_sampling/navbits_internal', rs_navbit_int)2434 CALL ncdf_getvar( '/quality_control/rs_external_navbits_applied', have_nb)2435 CALL ncdf_getvar( '/level_1a/raw_sampling/tracking_state', tracking_state)2442 CALL ncdf_getvar(TRIM(tdir)//'navbits_internal', rs_navbit_int) 2443 CALL ncdf_getvar(TRIM(sdir)//'quality_control/rs_external_navbits_applied', have_nb) 2444 CALL ncdf_getvar(TRIM(tdir)//'tracking_state', tracking_state) 2436 2445 2437 2446 IF (have_nb > 0) THEN 2438 CALL ncdf_getvar( '/level_1a/raw_sampling/navbits_external', rs_navbit_ext)2447 CALL ncdf_getvar(TRIM(tdir)//'navbits_external', rs_navbit_ext) 2439 2448 ELSE 2440 2449 rs_navbit_ext(:) = rs_navbit_int(:) 2441 2450 ENDIF … … 2445 2454 ALLOCATE(rs_q_ca_uncorr(n_rs)) 2446 2455 ALLOCATE(rs_exphase_l1_nco(n_rs)) 2447 2456 2448 CALL ncdf_getvar( '/level_1a/raw_sampling/i_ca_uncorr', rs_i_ca_uncorr)2449 CALL ncdf_getvar( '/level_1a/raw_sampling/q_ca_uncorr', rs_q_ca_uncorr)2450 CALL ncdf_getvar( '/level_1a/raw_sampling/exphase_l1_nco', rs_exphase_l1_nco, units=data_rs%Lev1a%units%phase)2451 CALL ncdf_getvar( '/level_1a/raw_sampling/snr_ca', data_rs%Lev1a%snr_L1ca, units=data_rs%Lev1a%units%snr)2457 CALL ncdf_getvar(TRIM(tdir)//'i_ca_uncorr', rs_i_ca_uncorr) 2458 CALL ncdf_getvar(TRIM(tdir)//'q_ca_uncorr', rs_q_ca_uncorr) 2459 CALL ncdf_getvar(TRIM(tdir)//'exphase_l1_nco', rs_exphase_l1_nco, units=data_rs%Lev1a%units%phase) 2460 CALL ncdf_getvar(TRIM(tdir)//'snr_ca', data_rs%Lev1a%snr_L1ca, units=data_rs%Lev1a%units%snr) 2452 2461 2453 2462 DO j=1,n_rs 2454 2463 rs_phase_l1_iq(j) = ATAN2(rs_q_ca_uncorr(j), rs_i_ca_uncorr(j)+TINY(1.0_wp)) … … 2461 2470 2462 2471 ! Comment in the line below if you wish to read the excess phase directly from the EUMETSAT file 2463 2472 ! instead of deriving from I and Q 2464 ! CALL ncdf_getvar('/ level_1a/raw_sampling/exphase_ca', data_rs%Lev1a%phase_L1, units=data_rs%Lev1a%units%phase)2473 ! CALL ncdf_getvar('/science_data/level_1a/raw_sampling/exphase_ca', data_rs%Lev1a%phase_L1, units=data_rs%Lev1a%units%phase) 2465 2474 2466 2475 ! For rising profiles remove all data with tracking state = 2 in the beginning of the record as these are not valid. 2467 2476 … … 2719 2728 ! 6.8 Level1b variables (if any) 2720 2729 ! ------------------------------ 2721 2730 2722 IF (ncdf_isvar(TRIM(d ir)//'impact')) THEN2723 CALL ncdf_getsize(TRIM(d ir)//'impact', n, dim = 1)2731 IF (ncdf_isvar(TRIM(ddir)//'impact')) THEN 2732 CALL ncdf_getsize(TRIM(ddir)//'impact', n, dim = 1) 2724 2733 CALL ropp_io_init(data%Lev1b, n) 2725 2734 ELSE 2726 2735 data%Lev1b%Npoints = 0 2727 2736 ENDIF 2728 2737 2729 2738 IF (data%Lev1b%Npoints > 0) THEN 2730 CALL ncdf_getvar(TRIM(d ir)//'lat_tp', data%Lev1b%lat_tp, units=data%Lev1b%units%lat_tp)2731 CALL ncdf_getvar(TRIM(d ir)//'lon_tp', data%Lev1b%lon_tp, units=data%Lev1b%units%lon_tp)2732 CALL ncdf_getvar(TRIM(d ir)//'azimuth_tp', data%Lev1b%azimuth_tp, units=data%Lev1b%units%azimuth_tp)2733 CALL ncdf_getvar(TRIM(d ir)//'impact', data%Lev1b%impact, units=data%Lev1b%units%impact)2734 CALL ncdf_getvar(TRIM(d ir)//'impact', data%Lev1b%impact_L1, units=data%Lev1b%units%impact)2735 CALL ncdf_getvar(TRIM(d ir)//'impact', data%Lev1b%impact_L2, units=data%Lev1b%units%impact)2736 CALL ncdf_getvar(TRIM(d ir)//'bangle', data%Lev1b%bangle, units=data%Lev1b%units%bangle)2737 CALL ncdf_getvar(TRIM(d ir)//'bangle_ca', data%Lev1b%bangle_L1, units=data%Lev1b%units%bangle)2738 CALL ncdf_getvar(TRIM(d ir)//'bangle_p2', data%Lev1b%bangle_L2, units=data%Lev1b%units%bangle)2739 CALL ncdf_getvar(TRIM(ddir)//'lat_tp', data%Lev1b%lat_tp, units=data%Lev1b%units%lat_tp) 2740 CALL ncdf_getvar(TRIM(ddir)//'lon_tp', data%Lev1b%lon_tp, units=data%Lev1b%units%lon_tp) 2741 CALL ncdf_getvar(TRIM(ddir)//'azimuth_tp', data%Lev1b%azimuth_tp, units=data%Lev1b%units%azimuth_tp) 2742 CALL ncdf_getvar(TRIM(ddir)//'impact', data%Lev1b%impact, units=data%Lev1b%units%impact) 2743 CALL ncdf_getvar(TRIM(ddir)//'impact', data%Lev1b%impact_L1, units=data%Lev1b%units%impact) 2744 CALL ncdf_getvar(TRIM(ddir)//'impact', data%Lev1b%impact_L2, units=data%Lev1b%units%impact) 2745 CALL ncdf_getvar(TRIM(ddir)//'bangle', data%Lev1b%bangle, units=data%Lev1b%units%bangle) 2746 CALL ncdf_getvar(TRIM(ddir)//'bangle_ca', data%Lev1b%bangle_L1, units=data%Lev1b%units%bangle) 2747 CALL ncdf_getvar(TRIM(ddir)//'bangle_p2', data%Lev1b%bangle_L2, units=data%Lev1b%units%bangle) 2739 2748 2740 2749 !(idc 24/1/13 pgf95 doesn't like this. 2741 2750 ! ! remove all NaN from EUM fields … … 2789 2798 2790 2799 data%FmtVersion = ' ' ; data%FmtVersion = ThisFmtVer 2791 2800 data%processing_centre = ' ' ; CALL ncdf_getatt('institution', data%processing_centre) 2792 data%pod_method = ' ' ; CALL ncdf_getatt('/ occultation/pod_method', data%pod_method)2793 data%phase_method = ' ' ; CALL ncdf_getatt('/ occultation/phase_method', data%phase_method)2794 data%bangle_method = ' ' ; CALL ncdf_getatt('/ occultation/retrieval_method', data%bangle_method)2801 data%pod_method = ' ' ; CALL ncdf_getatt('/science_data/occultation/pod_method', data%pod_method) 2802 data%phase_method = ' ' ; CALL ncdf_getatt('/science_data/occultation/phase_method', data%phase_method) 2803 data%bangle_method = ' ' ; CALL ncdf_getatt('/science_data/occultation/retrieval_method', data%bangle_method) 2795 2804 data%refrac_method = ' ' ; data%refrac_method = "UNKNOWN" 2796 2805 data%meteo_method = ' ' ; data%meteo_method = "UNKNOWN" 2797 2806 data%thin_method = ' ' ; data%thin_method = "UNKNOWN" 2798 data%software_version = ' ' ; CALL ncdf_getatt(' software_version' ,data%software_version)2807 data%software_version = ' ' ; CALL ncdf_getatt('processor_version' ,data%software_version) 2799 2808 2800 2809 ! Processing time, split up string 2801 2810 ! FIXME: Is there a library function for this that does some more format checks? 2802 CALL ncdf_getatt(' processing_time', readstr)2811 CALL ncdf_getatt('creation_time', readstr) 2803 2812 READ( readstr, '(i4,1x,i2,1x,i2,1x,i2,1x,i2,1x,i2,1x,i2)' ) data%DTpro%Year, data%DTpro%Month, data%DTpro%Day, & 2804 2813 data%DTpro%Hour, data%DTpro%Minute, data%DTpro%Second, data%DTpro%Msec 2805 2814