FV3 Bundle
ufo_gnssro_ref_tlad_interface.F90
Go to the documentation of this file.
1 ! (C) Copyright 2017 UCAR
2 !
3 ! This software is licensed under the terms of the Apache Licence Version 2.0
4 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5 
6 !> Fortran module to handle gnssro observations
7 
9 
10  use iso_c_binding
11  use config_mod
13  implicit none
14  private
15 
16 #define LISTED_TYPE ufo_gnssro_Ref_tlad
17 
18  !> Linked list interface - defines registry_t type
19 #include "../../../linkedList_i.f"
20 
21  !> Global registry
22  type(registry_t) :: ufo_gnssro_ref_tlad_registry
23 
24  ! ------------------------------------------------------------------------------
25 contains
26  ! ------------------------------------------------------------------------------
27  !> Linked list implementation
28 #include "../../../linkedList_c.f"
29 
30 ! ------------------------------------------------------------------------------
31 
32 subroutine ufo_gnssro_ref_tlad_setup_c(c_key_self, c_conf) bind(c,name='ufo_gnssro_ref_tlad_setup_f90')
33 implicit none
34 integer(c_int), intent(inout) :: c_key_self
35 type(c_ptr), intent(in) :: c_conf
36 
37 type(ufo_gnssro_Ref_tlad), pointer :: self
38 
39 call ufo_gnssro_ref_tlad_registry%setup(c_key_self, self)
40 
41 end subroutine ufo_gnssro_ref_tlad_setup_c
42 
43 ! ------------------------------------------------------------------------------
44 
45 subroutine ufo_gnssro_ref_tlad_delete_c(c_key_self) bind(c,name='ufo_gnssro_ref_tlad_delete_f90')
46 implicit none
47 integer(c_int), intent(inout) :: c_key_self
48 
49 type(ufo_gnssro_Ref_tlad), pointer :: self
50 
51 call ufo_gnssro_ref_tlad_registry%get(c_key_self, self)
52 call self%opr_delete()
53 call ufo_gnssro_ref_tlad_registry%remove(c_key_self)
54 
55 end subroutine ufo_gnssro_ref_tlad_delete_c
56 
57 ! ------------------------------------------------------------------------------
58 
59 subroutine ufo_gnssro_ref_tlad_settraj_c(c_key_self, c_key_geovals, c_obsspace) bind(c,name='ufo_gnssro_ref_tlad_settraj_f90')
60 
61 implicit none
62 integer(c_int), intent(in) :: c_key_self
63 integer(c_int), intent(in) :: c_key_geovals
64 type(c_ptr), value, intent(in) :: c_obsspace
65 
66 type(ufo_gnssro_Ref_tlad), pointer :: self
67 
68 character(len=*), parameter :: myname_="ufo_gnssro_ref_tlad_settraj_c"
69 
70 call ufo_gnssro_ref_tlad_registry%get(c_key_self, self)
71 call self%opr_settraj(c_key_geovals, c_obsspace)
72 
73 end subroutine ufo_gnssro_ref_tlad_settraj_c
74 
75 ! ------------------------------------------------------------------------------
76 
77 subroutine ufo_gnssro_ref_simobs_tl_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx) bind(c,name='ufo_gnssro_ref_simobs_tl_f90')
78 
79 implicit none
80 integer(c_int), intent(in) :: c_key_self
81 integer(c_int), intent(in) :: c_key_geovals
82 type(c_ptr), value, intent(in) :: c_obsspace
83 integer(c_int), intent(in) :: c_nobs
84 real(c_double), intent(inout) :: c_hofx(c_nobs)
85 
86 type(ufo_gnssro_Ref_tlad), pointer :: self
87 
88 character(len=*), parameter :: myname_="ufo_gnssro_ref_simobs_tl_c"
89 
90 call ufo_gnssro_ref_tlad_registry%get(c_key_self, self)
91 call self%opr_simobs_tl(c_key_geovals, c_obsspace, c_hofx)
92 
93 end subroutine ufo_gnssro_ref_simobs_tl_c
94 
95 ! ------------------------------------------------------------------------------
96 
97 subroutine ufo_gnssro_ref_simobs_ad_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx) bind(c,name='ufo_gnssro_ref_simobs_ad_f90')
98 
99 implicit none
100 integer(c_int), intent(in) :: c_key_self
101 integer(c_int), intent(in) :: c_key_geovals
102 type(c_ptr), value, intent(in) :: c_obsspace
103 integer(c_int), intent(in) :: c_nobs
104 real(c_double), intent(in) :: c_hofx(c_nobs)
105 
106 type(ufo_gnssro_Ref_tlad), pointer :: self
107 
108 character(len=*), parameter :: myname_="ufo_gnssro_ref_simobs_ad_c"
109 
110 call ufo_gnssro_ref_tlad_registry%get(c_key_self, self)
111 call self%opr_simobs_ad(c_key_geovals, c_obsspace, c_hofx)
112 
113 end subroutine ufo_gnssro_ref_simobs_ad_c
114 
115 ! ------------------------------------------------------------------------------
116 
117 end module ufo_gnssro_ref_tlad_mod_c
subroutine ufo_gnssro_ref_simobs_ad_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx)
subroutine ufo_gnssro_ref_simobs_tl_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx)
subroutine ufo_gnssro_ref_tlad_settraj_c(c_key_self, c_key_geovals, c_obsspace)
Fortran module for gnssro refractivity tangent linear and adjoint.
subroutine ufo_gnssro_ref_tlad_setup_c(c_key_self, c_conf)
Linked list implementation.
subroutine ufo_gnssro_ref_tlad_delete_c(c_key_self)
type(registry_t) ufo_gnssro_ref_tlad_registry
Linked list interface - defines registry_t type.
Fortran module to handle gnssro observations.