FV3 Bundle
ufo_insitutemperature_tlad_interface.F90
Go to the documentation of this file.
1 ! (C) Copyright 2017-2018 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 temperature profile observations
7 
9 
10  use iso_c_binding
11  use config_mod
12  use ufo_geovals_mod, only: ufo_geovals
15  implicit none
16  private
17 
18 #define LISTED_TYPE ufo_insitutemperature_tlad
19 
20  !> Linked list interface - defines registry_t type
21 #include "../../linkedList_i.f"
22 
23  !> Global registry
25 
26  ! ------------------------------------------------------------------------------
27 contains
28  ! ------------------------------------------------------------------------------
29  !> Linked list implementation
30 #include "../../linkedList_c.f"
31 
32 ! ------------------------------------------------------------------------------
33 
34 subroutine ufo_insitutemperature_tlad_setup_c(c_key_self, c_conf) bind(c,name='ufo_insitutemperature_tlad_setup_f90')
35 implicit none
36 integer(c_int), intent(inout) :: c_key_self
37 type(c_ptr), intent(in) :: c_conf
38 
39 type(ufo_insitutemperature_tlad), pointer :: self
40 
42 call ufo_insitutemperature_tlad_registry%add(c_key_self)
43 call ufo_insitutemperature_tlad_registry%get(c_key_self, self)
44 
46 
47 ! ------------------------------------------------------------------------------
48 
49 subroutine ufo_insitutemperature_tlad_delete_c(c_key_self) bind(c,name='ufo_insitutemperature_tlad_delete_f90')
50  implicit none
51 
52 integer(c_int), intent(inout) :: c_key_self
53 
54 type(ufo_insitutemperature_tlad), pointer :: self
55 
56 call ufo_insitutemperature_tlad_registry%get(c_key_self, self)
58 call ufo_insitutemperature_tlad_registry%remove(c_key_self)
59 
61 
62 ! ------------------------------------------------------------------------------
63 
64 subroutine ufo_insitutemperature_tlad_settraj_c(c_key_self, c_key_geovals, c_obsspace) bind(c,name='ufo_insitutemperature_tlad_settraj_f90')
65 
66 implicit none
67 integer(c_int), intent(in) :: c_key_self
68 integer(c_int), intent(in) :: c_key_geovals
69 type(c_ptr), value, intent(in) :: c_obsspace
70 
71 type(ufo_insitutemperature_tlad), pointer :: self
72 type(ufo_geovals), pointer :: geovals
73 
74 character(len=*), parameter :: myname_="ufo_insitutemperature_tlad_settraj_c"
75 
76 call ufo_insitutemperature_tlad_registry%get(c_key_self, self)
77 call ufo_geovals_registry%get(c_key_geovals,geovals)
78 
79 call ufo_insitutemperature_tlad_settraj(self, geovals, c_obsspace)
80 
82 
83 ! ------------------------------------------------------------------------------
84 
85 subroutine ufo_insitutemperature_simobs_tl_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx, c_bias) bind(c,name='ufo_insitutemperature_simobs_tl_f90')
86 
87 implicit none
88 integer(c_int), intent(in) :: c_key_self
89 integer(c_int), intent(in) :: c_key_geovals
90 integer(c_int), intent(in) :: c_obsspace
91 integer(c_int), intent(in) :: c_nobs
92 real(c_double), intent(inout) :: c_hofx(c_nobs)
93 integer(c_int), intent(in) :: c_bias
94 
95 type(ufo_insitutemperature_tlad), pointer :: self
96 type(ufo_geovals), pointer :: geovals
97 
98 character(len=*), parameter :: myname_="ufo_insitutemperature_simobs_tl_c"
99 
100 call ufo_insitutemperature_tlad_registry%get(c_key_self, self)
101 call ufo_geovals_registry%get(c_key_geovals,geovals)
102 
103 call ufo_insitutemperature_simobs_tl(self, geovals, c_hofx)!, obs_ti)
104 
106 
107 ! ------------------------------------------------------------------------------
108 
109 subroutine ufo_insitutemperature_simobs_ad_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx, c_key_bias) bind(c,name='ufo_insitutemperature_simobs_ad_f90')
111 implicit none
112 integer(c_int), intent(in) :: c_key_self
113 integer(c_int), intent(in) :: c_key_geovals
114 type(c_ptr), value, intent(in) :: c_obsspace
115 integer(c_int), intent(in) :: c_nobs
116 real(c_double), intent(inout) :: c_hofx(c_nobs)
117 integer(c_int), intent(in) :: c_key_bias
118 
119 type(ufo_insitutemperature_tlad), pointer :: self
120 type(ufo_geovals), pointer :: geovals
121 
122 call ufo_insitutemperature_tlad_registry%get(c_key_self, self)
123 call ufo_geovals_registry%get(c_key_geovals,geovals)
124 
125 call ufo_insitutemperature_simobs_ad(self, geovals, c_hofx)
126 
128 
subroutine ufo_insitutemperature_tlad_setup_c(c_key_self, c_conf)
Linked list implementation.
type(registry_t) ufo_insitutemperature_tlad_registry
Linked list interface - defines registry_t type.
subroutine ufo_insitutemperature_simobs_ad_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx, c_key_bias)
subroutine, public ufo_insitutemperature_tlad_settraj(traj, geovals, obss)
Fortran module to handle temperature profile observations.
subroutine, public ufo_insitutemperature_simobs_tl(traj, geovals, hofx)
subroutine ufo_insitutemperature_tlad_settraj_c(c_key_self, c_key_geovals, c_obsspace)
type to hold interpolated fields required by the obs operators
subroutine, public ufo_insitutemperature_simobs_ad(traj, geovals, hofx)
type(registry_t), public ufo_geovals_registry
Linked list interface - defines registry_t type.
Fortran module to handle ice concentration observations.
subroutine ufo_insitutemperature_simobs_tl_c(c_key_self, c_key_geovals, c_obsspace, c_nobs, c_hofx, c_bias)
subroutine, public ufo_insitutemperature_tlad_delete(self)