120 integer,
intent(in) :: rini
121 integer,
intent(in) :: rold(
ngrids)
122 integer,
intent(in) :: rnew(
ngrids)
124 character (len=*),
intent(in) :: driver
128 logical :: lweak, add
133 character (len=*),
parameter :: myfile = &
145# ifdef BALANCE_OPERATOR
171 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
172# ifdef BALANCE_OPERATOR
196 CALL load_adtotl (ng, tile, rold(ng), rnew(ng), add)
199# ifdef BALANCE_OPERATOR
213 & Rbck, Rini, Rold, Rnew, &
214 & Rec1, Rec2, Lposterior)
219 logical,
intent(in) :: lposterior
221 integer,
intent(in) :: model, outloop, innloop
222 integer,
intent(in) :: rbck, rini, rec1, rec2
223 integer,
intent(in) :: rold(
ngrids)
224 integer,
intent(in) :: rnew(
ngrids)
226 character (len=*),
intent(in) :: driver
230 logical :: lweak, add
232 integer :: adrec, bckrec, fcount, inirec
233 integer :: i, irec, ng, tile
235 integer :: ltlm1, ltlm2, rec5, jrec, nadrec
237 integer,
dimension(Ngrids) :: nrec
239 character (len=*),
parameter :: myfile = &
240 & __FILE__//
", error_covariance"
249 IF ((outloop.lt.0).and.(innloop.lt.0))
THEN
251 10
FORMAT (/,
' Convolving Adjoint Trajectory...')
253 WRITE (
stdout,20) outloop, innloop
254 20
FORMAT (/,
' Convolving Adjoint Trajectory: Outer = ',i3.3, &
270 fcount=
adm(ng)%Fcount
271 nrec(ng)=
adm(ng)%Nrec(fcount)
272 adm(ng)%Nrec(fcount)=0
296# ifdef BALANCE_OPERATOR
321 CALL wclock_on (ng, model, 82, __line__, myfile)
324 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
325# ifdef BALANCE_OPERATOR
332# ifdef ADJUST_BOUNDARY
337 CALL wclock_off (ng, model, 82, __line__, myfile)
352 CALL wclock_on (ng, model, 82, __line__, myfile)
355 CALL load_adtotl (ng, tile, rold(ng), rold(ng), add)
358# ifdef BALANCE_OPERATOR
363# ifdef POSTERIOR_ERROR_I
370 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
375 CALL wclock_off (ng, model, 82, __line__, myfile)
379# if defined ARRAY_MODES || defined R4DVAR || \
380 defined r4dvar_ana_sensitivity
387 IF ((model.eq.
irpm).and. &
388 & (index(driver,
'r4dvar').ne.0))
THEN
398 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
404# elif defined RBL4DVAR || defined RBL4DVAR_ANA_SENSITIVITY
412 IF ((model.eq.
inlm).and. &
413 & (index(driver,
'rbl4dvar').ne.0))
THEN
423 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
424 CALL ini_adjust (ng, tile, rold(ng), rnew(ng))
436 IF (model.eq.
itlm)
THEN
445# if defined ARRAY_MODES || defined R4DVAR || \
446 defined r4dvar_ana_sensitivity
447 ELSE IF (model.eq.
irpm)
THEN
456# elif (defined RBL4DVAR || defined RBL4DVAR_ANA_SENSITIVITY) && \
458 ELSE IF (model.eq.
inlm)
THEN
463 CALL wrt_ini (ng, -1, rnew(ng))
466# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS || \
467 defined adjust_boundary
486 IF (model.eq.
inlm)
THEN
498# ifdef POSTERIOR_ERROR_I
504 IF (lposterior.and.(
inner.ne.0))
THEN
533 jrec=rec5+nadrec/2+irec
542 CALL aug_oper (ng, tile, ltlm1, ltlm2)
546 CALL sum_grad (ng, tile, ltlm1, ltlm2)
551 adrec=(nrec(ng)-1)-(irec-1)
556 CALL sum_grad (ng, tile, ltlm1, ltlm2)
588 IF (nrec(ng).gt.3)
THEN
590 CALL wclock_on (ng, model, 82, __line__, myfile)
613 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
614# ifdef BALANCE_OPERATOR
621# ifdef ADJUST_BOUNDARY
643 CALL wclock_off (ng, model, 82, __line__, myfile)
660 IF (nrec(ng).gt.3)
THEN
662 CALL wclock_on (ng, model, 82, __line__, myfile)
666 DO irec=nrec(ng)-1,1,-1
683# ifdef BALANCE_OPERATOR
686 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
706 CALL wclock_off (ng, model, 82, __line__, myfile)
721 IF (nrec(ng).gt.3)
THEN
723 CALL wclock_on (ng, model, 82, __line__, myfile)
746 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
747# ifdef BALANCE_OPERATOR
754# ifdef ADJUST_BOUNDARY
770 CALL load_adtotl (ng, tile, rold(ng), rold(ng), add)
773# ifdef BALANCE_OPERATOR
776 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
795 CALL wclock_off (ng, model, 82, __line__, myfile)
807 SUBROUTINE saddlec (driver, Lselect, Rini, Rold, Rnew)
812 integer,
intent(in) :: rini
813 integer,
intent(in) :: rold(
ngrids)
814 integer,
intent(in) :: rnew(
ngrids)
816 logical,
intent(in) :: lselect
818 character (len=*),
intent(in) :: driver
822 logical :: lweak, add
827 character (len=*),
parameter :: myfile = &
828 & __FILE__//
", saddlec"
839# ifdef BALANCE_OPERATOR
865 CALL load_tltoad (ng, tile, rold(ng), rold(ng), add)
866# ifdef BALANCE_OPERATOR
893 CALL load_adtotl (ng, tile, rold(ng), rnew(ng), add)
896# ifdef BALANCE_OPERATOR