30 subroutine c_qg_wspeed_setup(c_key_self, c_conf) bind(c,name='qg_wspeed_setup_f90')
32 integer(c_int),
intent(inout) :: c_key_self
33 type(c_ptr),
intent(in) :: c_conf
35 type(qg_obsoper),
pointer :: self
36 character(len=1) :: svars(2) = (/
"u",
"v"/)
50 integer(c_int),
intent(inout) :: c_key_self
52 type(qg_obsoper),
pointer :: self
60 subroutine qg_wspeed_eqv(c_key_gom, c_key_hofx, c_bias) bind(c,name='qg_wspeed_eqv_f90')
62 integer(c_int),
intent(in) :: c_key_gom
63 integer(c_int),
intent(in) :: c_key_hofx
64 real(c_double),
intent(in) :: c_bias
65 type(qg_goms),
pointer :: gom
66 type(obs_vect),
pointer :: hofx
68 character(len=250) :: record
69 real(kind=kind_real) :: zz
71 if (abs(c_bias) > epsilon(c_bias))
call abor1_ftn (
"qg_wspeed: bias not implemented")
78 zz=gom%values(1,jo)*gom%values(1,jo)+gom%values(2,jo)*gom%values(2,jo)
79 hofx%values(1,io)=sqrt(zz)
85 & bind(c,name=
'qg_wspeed_equiv_tl_f90')
87 integer(c_int),
intent(in) :: c_key_gom
88 integer(c_int),
intent(in) :: c_key_hofx
89 integer(c_int),
intent(in) :: c_key_traj
90 real(c_double),
intent(in) :: c_bias
91 type(qg_goms),
pointer :: gom
92 type(obs_vect),
pointer :: hofx
93 type(qg_goms),
pointer :: traj
95 real(kind=kind_real) :: zz, zu, zv, zt
106 if (zt>epsilon(zt))
then 107 zz=2.0_kind_real*zu*gom%values(1,jo) &
108 +2.0_kind_real*zv*gom%values(2,jo)
109 hofx%values(1,io)=zz/(2.0_kind_real*zt)
111 hofx%values(1,io)=0.0_kind_real
118 & bind(c,name=
'qg_wspeed_equiv_ad_f90')
120 integer(c_int),
intent(in) :: c_key_gom
121 integer(c_int),
intent(in) :: c_key_hofx
122 integer(c_int),
intent(in) :: c_key_traj
123 real(c_double),
intent(inout) :: c_bias
124 type(qg_goms),
pointer :: gom
125 type(obs_vect),
pointer :: hofx
126 type(qg_goms),
pointer :: traj
128 real(kind=kind_real) :: zz, zu, zv, zt
139 if (zt>epsilon(zt))
then 140 zz=hofx%values(1,io)/(2.0_kind_real*zt)
141 gom%values(1,jo)=2.0_kind_real*zu*zz
142 gom%values(2,jo)=2.0_kind_real*zv*zz
144 gom%values(1,jo)=0.0_kind_real
145 gom%values(2,jo)=0.0_kind_real
151 subroutine qg_wspeed_gettraj(c_key_self, c_nobs, c_vars, c_key_traj) bind(c,name='qg_wspeed_gettraj_f90')
152 use fckit_log_module,
only : fckit_log
154 integer(c_int),
intent(in) :: c_key_self
155 integer(c_int),
intent(in) :: c_nobs
156 integer(c_int),
dimension(*),
intent(in) :: c_vars
157 integer(c_int),
intent(inout) :: c_key_traj
159 type(qg_obsoper),
pointer :: self
160 type(qg_goms),
pointer :: traj
161 type(qg_vars) :: vars
162 integer,
allocatable :: mobs(:)
171 allocate(mobs(c_nobs))
180 subroutine qg_wspeed_settraj(c_key_gom, c_key_traj) bind(c,name='qg_wspeed_settraj_f90')
181 use fckit_log_module,
only : fckit_log
183 integer(c_int),
intent(in) :: c_key_gom
184 integer(c_int),
intent(in) :: c_key_traj
186 type(qg_goms),
pointer :: gom
187 type(qg_goms),
pointer :: traj
195 traj%values(1,io)=gom%values(1,jo)
196 traj%values(2,io)=gom%values(2,jo)
type(registry_t), public qg_obs_vect_registry
Linked list interface - defines registry_t type.
subroutine qg_wspeed_equiv_tl(c_key_gom, c_key_hofx, c_key_traj, c_bias)
subroutine, public gom_setup(self, vars, kobs)
type(registry_t), public qg_obsoper_registry
Linked list interface - defines registry_t type.
subroutine qg_wspeed_settraj(c_key_gom, c_key_traj)
subroutine c_qg_wspeed_setup(c_key_self, c_conf)
subroutine qg_wspeed_gettraj(c_key_self, c_nobs, c_vars, c_key_traj)
subroutine qg_wspeed_eqv(c_key_gom, c_key_hofx, c_bias)
subroutine c_qg_wspeed_delete(c_key_self)
subroutine, public qg_vars_create(self, kvars)
Linked list implementation.
Fortran module handling observation locations.
Handle observations for the QG model.
type(registry_t), public qg_goms_registry
Linked list interface - defines registry_t type.
Fortran module to handle variables for the QG model.
Fortran module to handle wind speed observations for the QG model.
subroutine, public qg_oper_setup(self, c_conf, svars, ncol)
Linked list implementation.
Fortran module handling interpolated (to obs locations) model variables.
Fortran module for streamfunction observations for the QG model.
subroutine qg_wspeed_equiv_ad(c_key_gom, c_key_hofx, c_key_traj, c_bias)
Fortran module handling observation vectors.