2#if defined FOUR_DVAR && defined OBSERVATIONS
12# ifdef WEAK_CONSTRAINT
13# if defined R4DVAR || defined R4DVAR_ANA_SENSITIVITY || \
68 integer,
intent(in) :: ng, model
72 integer :: NSUB, iobs, ivar
76 real(r8),
dimension(0:NobsVar(ng)) :: my_ObsCost
77# if defined DATALESS_LOOPS && \
78 (defined r4dvar || defined r4dvar_ana_sensitivity || \
80 real(r8),
dimension(0:NobsVar(ng)) :: my_ObsCost1
87# if defined R4DVAR || defined R4DVAR_ANA_SENSITIVITY || \
92 IF (model.eq.
irpm)
THEN
94 my_obscost(ivar)=0.0_r8
96 my_obscost1(ivar)=0.0_r8
101 IF ((ivar.gt.0).and.(
obsscale(iobs).gt.0.0_r8).and. &
102 & (
obserr(iobs).ne.0.0_r8))
THEN
105# ifdef DATALESS_LOOPS
109 my_obscost(0)=my_obscost(0)+cff
110 my_obscost(ivar)=my_obscost(ivar)+cff
111# ifdef DATALESS_LOOPS
112 my_obscost1(0)=my_obscost1(0)+cff1
113 my_obscost1(ivar)=my_obscost1(ivar)+cff1
119# elif defined RBL4DVAR || defined RBL4DVAR_ANA_SENSITIVITY || \
120 defined sp4dvar || defined tl_rbl4dvar
124 IF (model.eq.
inlm)
THEN
126 my_obscost(ivar)=0.0_r8
130 IF ((ivar.gt.0).and.(
obsscale(iobs).gt.0.0_r8).and. &
131 & (
obserr(iobs).ne.0.0_r8))
THEN
134 my_obscost(0)=my_obscost(0)+cff
135 my_obscost(ivar)=my_obscost(ivar)+cff
143 IF (model.eq.
itlm)
THEN
145 my_obscost(ivar)=0.0_r8
149 IF ((ivar.gt.0).and.(
obsscale(iobs).gt.0.0_r8))
THEN
152 my_obscost(0)=my_obscost(0)+cff
153 my_obscost(ivar)=my_obscost(ivar)+cff
159 ELSE IF (model.eq.
inlm)
THEN
161 my_obscost(ivar)=0.0_r8
165 IF ((ivar.gt.0).and.(
obsscale(iobs).gt.0.0_r8))
THEN
168 my_obscost(0)=my_obscost(0)+cff
169 my_obscost(ivar)=my_obscost(ivar)+cff
190# if defined R4DVAR || defined R4DVAR_ANA_SENSITIVITY || \
192 IF (model.eq.
irpm)
THEN
194 fourdvar(ng)%DataPenalty(ivar)=my_obscost(ivar)+ &
196# ifdef DATALESS_LOOPS
197 fourdvar(ng)%NLPenalty(ivar)=my_obscost1(ivar)+ &
202# elif defined RBL4DVAR || defined RBL4DVAR_ANA_SENSITIVITY || \
203 defined sp4dvar || defined tl_rbl4dvar
204 IF (model.eq.
inlm)
THEN
206 fourdvar(ng)%NLPenalty(ivar)=my_obscost(ivar)+ &
211 IF (model.eq.
itlm)
THEN
216 ELSE IF (model.eq.
inlm)
THEN
226# ifndef WEAK_CONSTRAINT
231 IF ((
nrun.eq.1).and.(model.eq.
itlm))
THEN
239 IF ((
inner.eq.0).and.(model.eq.
itlm))
THEN
type(t_fourdvar), dimension(:), allocatable fourdvar
integer, dimension(:), allocatable obstype2state
integer, dimension(:), allocatable nobs
integer, dimension(:), allocatable nobsvar
real(r8), dimension(:), allocatable obsval
real(r8), dimension(:), allocatable obsscale
real(r8), dimension(:), allocatable obserr
integer, dimension(:), allocatable obstype
real(r8), dimension(:), allocatable nlmodval
integer, dimension(:), allocatable nstrobs
integer, dimension(:), allocatable nendobs
integer, dimension(:), allocatable ntilex
integer, dimension(:), allocatable ntilee
subroutine obs_cost(ng, model)