UFO
gnssro_mod_conf.F90
Go to the documentation of this file.
1 !==========================================================================
3 !==========================================================================
4 use fckit_configuration_module, only: fckit_configuration
5 use iso_c_binding
6 use kinds
7 use obsspace_mod
9 implicit none
10 private
11 public :: gnssro_conf
12 public :: gnssro_conf_setup
13 
15  integer(c_int) :: ro_top_meter
16  integer(c_int) :: use_compress
17  integer(c_int) :: n_horiz
18  integer(c_int) :: sr_steps
19  character(len=MAXVARLEN) :: super_ref_qc
20  character(len=:), allocatable :: str
21  real(kind_real) :: res
22  real(kind_real) :: top_2d
23  real(kind_real) :: dtheta
24  character(len=20) :: vertlayer
25 end type gnssro_conf
26 
27 !--------- ropp2d location default parameters-----------------
28 integer(c_int), parameter, public :: n_horiz_2d = 31 !should be odd number
29 real(kind_real), parameter, public :: res_2d = 40.0 !km
30 real(kind_real), parameter, public :: top_2d = 20.0 !km; maximum height the 2d operator is applied
31 contains
32 !-------------------------------
33 
34 subroutine gnssro_conf_setup(roconf, f_conf)
35 implicit none
36 type(gnssro_conf), intent(inout) :: roconf
37 type(fckit_configuration), intent(in) :: f_conf
38 
39 character(len=:), allocatable :: str
40 
41 roconf%ro_top_meter = 30000
42 if (f_conf%has("ro_top_meter")) call f_conf%get_or_die("ro_top_meter",roconf%ro_top_meter)
43 roconf%use_compress = 1
44 if (f_conf%has("use_compress")) call f_conf%get_or_die("use_compress",roconf%use_compress)
45 roconf%n_horiz = n_horiz_2d
46 if (f_conf%has("n_horiz")) call f_conf%get_or_die("n_horiz",roconf%n_horiz)
47 roconf%res = res_2d
48 if (f_conf%has("res")) call f_conf%get_or_die("res",roconf%res)
49 roconf%top_2d = top_2d
50 if (f_conf%has("top_2d")) call f_conf%get_or_die("top_2d",roconf%top_2d)
51 roconf%top_2d = roconf%top_2d*1000.0 ! km to m
52 roconf%dtheta = roconf%res/mean_earth_rad
53 roconf%vertlayer = "full"
54 if (f_conf%has("vertlayer")) then
55  call f_conf%get_or_die("vertlayer",str)
56  roconf%vertlayer = str
57 end if
58 roconf%super_ref_qc = "NBAM"
59 if (f_conf%has("super_ref_qc")) then
60  call f_conf%get_or_die("super_ref_qc",str)
61  roconf%super_ref_qc=trim(str)
62 endif
63 roconf%sr_steps = 2
64 if (f_conf%has("sr_steps")) call f_conf%get_or_die("sr_steps",roconf%sr_steps)
65 
66 end subroutine gnssro_conf_setup
67 
68 
69 end module gnssro_mod_conf
gnssro_mod_conf::n_horiz_2d
integer(c_int), parameter, public n_horiz_2d
Definition: gnssro_mod_conf.F90:28
gnssro_mod_conf::top_2d
real(kind_real), parameter, public top_2d
Definition: gnssro_mod_conf.F90:30
gnssro_mod_conf::gnssro_conf
Definition: gnssro_mod_conf.F90:14
gnssro_mod_conf::gnssro_conf_setup
subroutine, public gnssro_conf_setup(roconf, f_conf)
Definition: gnssro_mod_conf.F90:35
gnssro_mod_conf::res_2d
real(kind_real), parameter, public res_2d
Definition: gnssro_mod_conf.F90:29
gnssro_mod_constants
Definition: gnssro_mod_constants.F90:2
gnssro_mod_conf
Definition: gnssro_mod_conf.F90:2