FV3 Bundle
ufo_seaicefrac_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 ice concentration 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_seaicefrac_tlad
19 
20  !> Linked list interface - defines registry_t type
21 #include "../../linkedList_i.f"
22 
23  !> Global registry
24  type(registry_t) :: ufo_seaicefrac_tlad_registry
25 
26  ! ------------------------------------------------------------------------------
27 contains
28  ! ------------------------------------------------------------------------------
29  !> Linked list implementation
30 #include "../../linkedList_c.f"
31 
32 ! ------------------------------------------------------------------------------
33 
34 subroutine ufo_seaicefrac_tlad_setup_c(c_key_self, c_conf) bind(c,name='ufo_seaicefrac_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_seaicefrac_tlad), pointer :: self
40 
42 call ufo_seaicefrac_tlad_registry%add(c_key_self)
43 call ufo_seaicefrac_tlad_registry%get(c_key_self, self)
44 
45 end subroutine ufo_seaicefrac_tlad_setup_c
46 
47 ! ------------------------------------------------------------------------------
48 
49 subroutine ufo_seaicefrac_tlad_delete_c(c_key_self) bind(c,name='ufo_seaicefrac_tlad_delete_f90')
50 implicit none
51 integer(c_int), intent(inout) :: c_key_self
52 
53 type(ufo_seaicefrac_tlad), pointer :: self
54 
55 call ufo_seaicefrac_tlad_registry%get(c_key_self, self)
56 call ufo_seaicefrac_tlad_registry%remove(c_key_self)
57 
58 end subroutine ufo_seaicefrac_tlad_delete_c
59 
60 ! ------------------------------------------------------------------------------
61 
62 subroutine ufo_seaicefrac_tlad_settraj_c(c_key_self, c_key_geovals) bind(c,name='ufo_seaicefrac_tlad_settraj_f90')
63 
64 implicit none
65 integer(c_int), intent(in) :: c_key_self
66 integer(c_int), intent(in) :: c_key_geovals
67 
68 type(ufo_seaicefrac_tlad), pointer :: self
69 type(ufo_geovals), pointer :: geovals
70 
71 character(len=*), parameter :: myname_="ufo_seaicefrac_tlad_settraj_c"
72 
73 call ufo_seaicefrac_tlad_registry%get(c_key_self, self)
74 call ufo_geovals_registry%get(c_key_geovals,geovals)
75 
76 call ufo_seaicefrac_tlad_settraj(self, geovals)
77 
78 end subroutine ufo_seaicefrac_tlad_settraj_c
79 
80 ! ------------------------------------------------------------------------------
81 
82 subroutine ufo_seaicefrac_simobs_tl_c(c_key_self, c_key_geovals, c_nobs, c_hofx) bind(c,name='ufo_seaicefrac_simobs_tl_f90')
83 
84 implicit none
85 integer(c_int), intent(in) :: c_key_self
86 integer(c_int), intent(in) :: c_key_geovals
87 integer(c_int), intent(in) :: c_nobs
88 real(c_double), intent(inout) :: c_hofx(c_nobs)
89 
90 type(ufo_seaicefrac_tlad), pointer :: self
91 type(ufo_geovals), pointer :: geovals
92 
93 character(len=*), parameter :: myname_="ufo_seaicefrac_simobs_tl_c"
94 
95 call ufo_seaicefrac_tlad_registry%get(c_key_self, self)
96 call ufo_geovals_registry%get(c_key_geovals,geovals)
97 
98 call ufo_seaicefrac_simobs_tl(self, geovals, c_hofx)
99 
100 end subroutine ufo_seaicefrac_simobs_tl_c
101 
102 ! ------------------------------------------------------------------------------
103 
104 subroutine ufo_seaicefrac_simobs_ad_c(c_key_self, c_key_geovals, c_nobs, c_hofx) bind(c,name='ufo_seaicefrac_simobs_ad_f90')
106 implicit none
107 integer(c_int), intent(in) :: c_key_self
108 integer(c_int), intent(in) :: c_key_geovals
109 integer(c_int), intent(in) :: c_nobs
110 real(c_double), intent(inout) :: c_hofx(c_nobs)
111 
112 type(ufo_seaicefrac_tlad), pointer :: self
113 type(ufo_geovals), pointer :: geovals
114 
115 character(len=*), parameter :: myname_="ufo_seaicefrac_simobs_ad_c"
116 
117 call ufo_seaicefrac_tlad_registry%get(c_key_self, self)
118 call ufo_geovals_registry%get(c_key_geovals,geovals)
119 
120 call ufo_seaicefrac_simobs_ad(self, geovals, c_hofx)
121 
122 end subroutine ufo_seaicefrac_simobs_ad_c
123 
124 ! ------------------------------------------------------------------------------
125 
126 end module ufo_seaicefrac_tlad_mod_c
type(registry_t) ufo_seaicefrac_tlad_registry
Linked list interface - defines registry_t type.
Fortran module to handle ice concentration observations.
subroutine ufo_seaicefrac_simobs_ad_c(c_key_self, c_key_geovals, c_nobs, c_hofx)
subroutine, public ufo_seaicefrac_simobs_tl(self, geovals, hofx)
Fortran module to handle ice concentration observations.
subroutine ufo_seaicefrac_simobs_tl_c(c_key_self, c_key_geovals, c_nobs, c_hofx)
subroutine ufo_seaicefrac_tlad_delete_c(c_key_self)
subroutine ufo_seaicefrac_tlad_setup_c(c_key_self, c_conf)
Linked list implementation.
type to hold interpolated fields required by the obs operators
subroutine ufo_seaicefrac_tlad_settraj_c(c_key_self, c_key_geovals)
type(registry_t), public ufo_geovals_registry
Linked list interface - defines registry_t type.
subroutine, public ufo_seaicefrac_tlad_settraj(self, geovals)
subroutine, public ufo_seaicefrac_simobs_ad(self, geovals, hofx)