86# if defined PIO_LIB && defined DISTRIBUTE
92# ifdef ADJUST_BOUNDARY
112# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F || \
113 defined posterior_eofs
117# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F
120# if defined POSTERIOR_EOFS || defined POSTERIOR_ERROR_I || \
121 defined posterior_error_f
137# ifdef POSTERIOR_ERROR_F
141# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F || \
142 defined posterior_eofs
145# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F
160# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F
163# ifdef POSTERIOR_ERROR_F
168# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS || \
169 defined adjust_boundary
175# if defined BALANCE_OPERATOR && defined ZETA_ELLIPTIC
188# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F || \
228 integer,
intent(in) :: my_outer
232 integer :: lstr, ng, tile
237 integer :: fcount, tindex
242 character (len=*),
parameter :: myfile = &
243 & __FILE__//
", background_initialize"
256 DO thread=thread_range
281# ifdef FORWARD_FLUXES
290 rst(ng)%Nrec(fcount)=0
305 ini(ng)%Nrec(fcount)=1
323 IF (my_outer.eq.0)
THEN
327 CALL background_std (ng, tile, tindex, lstd)
334 IF (lwrtstd(ng))
THEN
336 fcount=
std(5,ng)%load
337 std(5,ng)%Nrec(fcount)=1
339 CALL wrt_std (ng,
myrank, lstd)
341 CALL wrt_std (ng, -1, lstd)
355 WRITE (
his(ng)%name,10) trim(
fwd(ng)%head), my_outer
356 lstr=len_trim(
his(ng)%name)
357 his(ng)%base=
his(ng)%name(1:lstr-3)
369 WRITE (
qck(ng)%name,10) trim(
qck(ng)%head), my_outer
370 lstr=len_trim(
qck(ng)%name)
371 qck(ng)%base=
qck(ng)%name(1:lstr-3)
388 DO thread=thread_range
394 10
FORMAT (a,
'_outer',i0,
'.nc')
418 integer,
intent(in) :: my_outer
420 real(
dp),
intent(in) :: runinterval
424 logical :: donestepping
426 integer :: i, lstr, ng, tile
427 integer :: fcount, tindex
431# if defined MODEL_COUPLING && !defined MCT_LIB
432 integer :: nstrstep, nendstep, extra
434 real(
dp) :: endtime, nexttime
437 character (len=20) :: string
439 character (len=*),
parameter :: myfile = &
440 & __FILE__//
", background"
444# if !(defined MODEL_COUPLING && defined ESMF_LIB)
459# if defined MODEL_COUPLING && !defined MCT_LIB
472 DO thread=thread_range
486 WRITE (
avg(ng)%name,10) trim(
avg(ng)%head), my_outer
487 lstr=len_trim(
avg(ng)%name)
488 avg(ng)%base=
avg(ng)%name(1:lstr-3)
493 WRITE (
dia(ng)%name,10) trim(
dia(ng)%head), my_outer
494 lstr=len_trim(
dia(ng)%name)
495 dia(ng)%base=
dia(ng)%name(1:lstr-3)
501# if defined MODEL_COUPLING && !defined MCT_LIB
503 nexttime=
time(ng)+runinterval
505 IF ((nexttime.eq.endtime).and.(ng.eq.1))
THEN
533# if defined MODEL_COUPLING && !defined MCT_LIB
540# if defined MODEL_COUPLING && !defined MCT_LIB
541 IF (nendstep.eq.
ntend(1))
THEN
550 IF (donestepping)
THEN
576 IF (
fourdvar(ng)%NLPenalty(i).ne.0.0_r8)
THEN
577 WRITE (
stdout,30) my_outer, 0,
'NLM', &
587 SELECT CASE (
dav(ng)%IOtype)
590 &
'NL_iDataPenalty', &
593 & ncid =
dav(ng)%ncid)
595# if defined PIO_LIB && defined DISTRIBUTE
598 &
'NL_iDataPenalty', &
601 & piofile =
dav(ng)%pioFile)
617 DO thread=thread_range
623 10
FORMAT (a,
'_outer',i0,
'.nc')
624 20
FORMAT (/,1x,a,1x,
'ROMS: started time-stepping:', &
625 &
' (Grid: ',i0,
', Outer: ',i2.2,
', Inner: ',i3.3, &
626 ', TimeSteps: ',i0,
' - ',i0,
')',/)
627 30
FORMAT (
' (',i3.3,
',',i3.3,
'): ',a,
' data penalty, Jdata = ', &
628 & 1p,e17.10,0p,t68,a)
657 integer,
intent(in) :: my_outer
659 real(
dp),
intent(in) :: runinterval
663 logical :: lcgini, linner, lposterior
665 integer :: i, ifile, lstr, my_inner, ng, tile
666 integer :: fcount, inprec
668 integer :: adrec, nlast
669 integer :: irec, jrec, jrec1, jrec2
676 integer,
dimension(Ngrids) :: nrec
678 integer,
dimension(Ngrids) :: nadrec
685 character (len=8 ) :: driver =
'rbl4dvar'
686 character (len=10) :: suffix
688 character (len=*),
parameter :: myfile = &
689 & __FILE__//
", increment"
702 DO thread=thread_range
717 IF (my_outer.gt.1)
THEN
733 IF (my_outer.gt.1)
THEN
744 IF (my_outer.gt.1)
THEN
755 IF (my_outer.gt.1)
THEN
760 fcount=
adm(ng)%Fcount
781 IF (my_outer.gt.1)
THEN
799 IF (my_outer.eq.1)
THEN
801 SELECT CASE (
dav(ng)%IOtype)
805 & ncid =
dav(ng)%ncid)
807# if defined PIO_LIB && defined DISTRIBUTE
811 & piofile =
dav(ng)%pioFile)
819 SELECT CASE (
dav(ng)%IOtype)
823 & ncid =
dav(ng)%ncid)
825# if defined PIO_LIB && defined DISTRIBUTE
829 & piofile =
dav(ng)%pioFile)
840 SELECT CASE (
obs(ng)%IOtype)
850# if defined PIO_LIB && defined DISTRIBUTE
867 WRITE (
his(ng)%name,10) trim(
fwd(ng)%head), my_outer-1
868 lstr=len_trim(
his(ng)%name)
869 his(ng)%base=
his(ng)%name(1:lstr-3)
870 IF (
his(ng)%Nfiles.gt.1)
THEN
871 DO ifile=1,
his(ng)%Nfiles
872 WRITE (suffix,
"('_',i4.4,'.nc')") ifile
873 his(ng)%files(ifile)=trim(
his(ng)%base)//trim(suffix)
875 his(ng)%name=trim(
his(ng)%files(1))
877 his(ng)%files(1)=trim(
his(ng)%name)
888 WRITE (
qck(ng)%name,10) trim(
qck(ng)%head), my_outer-1
889 lstr=len_trim(
qck(ng)%name)
890 qck(ng)%base=
qck(ng)%name(1:lstr-3)
891 IF (
qck(ng)%Nfiles.gt.1)
THEN
892 DO ifile=1,
qck(ng)%Nfiles
893 WRITE (suffix,
"('_',i4.4,'.nc')") ifile
894 qck(ng)%files(ifile)=trim(
qck(ng)%base)//trim(suffix)
896 qck(ng)%name=trim(
qck(ng)%files(1))
898 qck(ng)%files(1)=trim(
qck(ng)%name)
909 SELECT CASE (
his(ng)%IOtype)
913 & start = (/inprec/), &
916# if defined PIO_LIB && defined DISTRIBUTE
920 & start = (/inprec/), &
927# ifdef ADJUST_BOUNDARY
937# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
965# ifdef FORWARD_FLUXES
1007 check_outer1 :
IF (my_outer.eq.1)
THEN
1058 DO irec=1,nadrec(ng)
1065 & __line__, myfile))
RETURN
1079# if defined POSTERIOR_EOFS || defined POSTERIOR_ERROR_I || \
1080 defined posterior_error_f
1093# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F
1118 check_outer2 :
IF (my_outer.gt.1)
THEN
1133# ifdef ADJUST_BOUNDARY
1151 IF (
frcrec(ng).gt.3)
THEN
1169 WRITE (
stdout,20)
'TL', ng, my_outer, 0, &
1200# ifdef ADJUST_BOUNDARY
1206# if defined BALANCE_OPERATOR && defined ZETA_ELLIPTIC
1227 inner_loop :
DO my_inner=0,
ninner
1240 IF ((
inner.eq.0).and.(my_outer.gt.1))
THEN
1242 SELECT CASE (
dav(ng)%IOtype)
1245 &
'TLmodel_value', tlmodval)
1251 & ncid =
dav(ng)%ncid, &
1252 & start = (/1,my_outer-1/), &
1253 & total = (/
ndatum(ng),1/))
1257# if defined PIO_LIB && defined DISTRIBUTE
1260 &
'TLmodel_value', tlmodval)
1266 & piofile =
dav(ng)%pioFile, &
1267 & start = (/1,my_outer-1/), &
1268 & total = (/
ndatum(ng),1/))
1276 IF (
inner.eq.0)
THEN
1287 IF (
inner.eq.0)
THEN
1306 inner_compute :
IF (linner)
THEN
1325# ifdef WEAK_NOINTERP
1332 adm(ng)%Nrec(fcount)=0
1340 WRITE (
stdout,20)
'AD', ng, my_outer, my_inner, &
1365# ifndef WEAK_NOINTERP
1396# ifdef POSTERIOR_ERROR_I
1451 IF (
frcrec(ng).gt.3)
THEN
1467 IF ((my_outer.eq.1).and.(
inner.eq.1))
THEN
1479 WRITE (
stdout,20)
'TL', ng, my_outer, my_inner, &
1496# ifdef POSTERIOR_ERROR_F
1511 IF (
inner.ne.0)
THEN
1519 & __line__, myfile))
RETURN
1540 END IF inner_compute
1562# ifdef WEAK_NOINTERP
1569 adm(ng)%Nrec(fcount)=0
1590# ifndef WEAK_NOINTERP
1627 nrec(ng)=
adm(ng)%Nrec(fcount)
1683# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS || \
1684 defined adjust_boundary
1754 IF (
timeiau(ng).eq.0.0_dp)
THEN
1759 IF (
timeiau(ng).eq.0.0_dp)
THEN
1777# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS || \
1778 defined adjust_boundary
1929# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS || \
1930 defined adjust_boundary
1986 jb0(my_outer)=0.0_r8
2012 DO irec=1,nadrec(ng)/2
2014 jrec2=
rec5+nadrec(ng)/2+irec
2031 DO irec=1,nadrec(ng)/2
2050 DO thread=thread_range
2056 10
FORMAT (a,
'_outer',i0,
'.nc')
2057 20
FORMAT (/,1x,a,1x,
'ROMS: started time-stepping:', &
2058 &
' (Grid: ',i0,
', Outer: ',i2.2,
', Inner: ',i3.3, &
2059 ', TimeSteps: ',i0,
' - ',i0,
')',/)
2060 30
FORMAT (/,
' Converting Convolved Adjoint Trajectory to', &
2061 &
' Impulses: Outer = ',i3.3,
' Inner = ',i3.3,/)
2083 integer,
intent(in) :: my_outer
2087 integer :: ifile, lstr, ng, tile
2093 integer,
dimension(Ngrids) :: indxsave
2095 character (len=10) :: suffix
2097 character (len=*),
parameter :: myfile = &
2098 & __FILE__//
", analysis_initialize"
2111 DO thread=thread_range
2124# ifdef ADJUST_BOUNDARY
2147# if defined MODEL_COUPLING && defined ESMF_LIB
2176 SELECT CASE (
dav(ng)%IOtype)
2180 & ncid =
dav(ng)%ncid)
2182# if defined PIO_LIB && defined DISTRIBUTE
2186 & piofile =
dav(ng)%pioFile)
2194 IF (my_outer.eq.
nouter)
THEN
2196 SELECT CASE (
dav(ng)%IOtype)
2200 & ncid =
dav(ng)%ncid)
2202# if defined PIO_LIB && defined DISTRIBUTE
2206 & piofile =
dav(ng)%pioFile)
2212# ifdef FORWARD_FLUXES
2220 WRITE (
qck(ng)%name,10) trim(
qck(ng)%head), my_outer-1
2221 lstr=len_trim(
qck(ng)%name)
2222 qck(ng)%base=
qck(ng)%name(1:lstr-3)
2248 WRITE (
his(ng)%name,10) trim(
fwd(ng)%head), my_outer
2249 lstr=len_trim(
his(ng)%name)
2250 his(ng)%base=
his(ng)%name(1:lstr-3)
2251 IF (
his(ng)%Nfiles.gt.1)
THEN
2252 DO ifile=1,
his(ng)%Nfiles
2253 WRITE (suffix,
"('_',i4.4,'.nc')") ifile
2254 his(ng)%files(ifile)=trim(
his(ng)%base)//trim(suffix)
2256 his(ng)%name=trim(
his(ng)%files(1))
2258 his(ng)%files(1)=trim(
his(ng)%name)
2271# ifdef FORWARD_FLUXES
2274 WRITE (
qck(ng)%name,10) trim(
qck(ng)%head), my_outer
2275 lstr=len_trim(
qck(ng)%name)
2276 qck(ng)%base=
qck(ng)%name(1:lstr-3)
2277 IF (
qck(ng)%Nfiles.gt.1)
THEN
2278 DO ifile=1,
qck(ng)%Nfiles
2279 WRITE (suffix,
"('_',i4.4,'.nc')") ifile
2280 qck(ng)%files(ifile)=trim(
qck(ng)%base)//trim(suffix)
2282 qck(ng)%name=trim(
qck(ng)%files(1))
2284 qck(ng)%files(1)=trim(
qck(ng)%name)
2294 SELECT CASE (
adm(ng)%IOtype)
2297 & dimname =
'ocean_time', &
2299# if defined PIO_LIB && defined DISTRIBUTE
2302 & dimname =
'ocean_time', &
2309 IF (
frcrec(ng).gt.3)
THEN
2319 indxsave(ng)=
ini(ng)%Rindex
2320 ini(ng)%Rindex=my_outer+2
2323 rst(ng)%Nrec(fcount)=0
2333 IF (
timeiau(ng).gt.0.0_dp)
THEN
2343 IF (
timeiau(ng).gt.0.0_dp)
THEN
2355 ini(ng)%Rindex=indxsave(ng)
2361 IF (my_outer.eq.
nouter)
THEN
2367 10
FORMAT (a,
'_outer',i0,
'.nc')
2389 integer,
intent(in) :: my_outer
2391 real(
dp),
intent(in) :: runinterval
2395 logical :: donestepping
2397 integer :: i, lstr, ng
2402# if defined MODEL_COUPLING && !defined MCT_LIB
2403 integer :: nstrstep, nendstep, extra
2405 real(
dp) :: endtime, nexttime
2408 character (len=20) :: string
2410 character (len=*),
parameter :: myfile = &
2411 & __FILE__//
", analysis"
2415# if !(defined MODEL_COUPLING && defined ESMF_LIB)
2428# if defined MODEL_COUPLING && !defined MCT_LIB
2441 DO thread=thread_range
2456 WRITE (
avg(ng)%name,10) trim(
avg(ng)%head), my_outer
2457 lstr=len_trim(
avg(ng)%name)
2458 avg(ng)%base=
avg(ng)%name(1:lstr-3)
2464 WRITE (
dia(ng)%name,10) trim(
dia(ng)%head), my_outer
2465 lstr=len_trim(
dia(ng)%name)
2466 dia(ng)%base=
dia(ng)%name(1:lstr-3)
2468# if defined MODEL_COUPLING && !defined MCT_LIB
2470 nexttime=
time(ng)+runinterval
2472 IF ((nexttime.eq.endtime).and.(ng.eq.1))
THEN
2481 & nstrstep, nendstep
2491 CALL main3d (runinterval)
2493 CALL main2d (runinterval)
2499# if defined MODEL_COUPLING && !defined MCT_LIB
2506# if defined MODEL_COUPLING && !defined MCT_LIB
2507 IF (nendstep.eq.
ntend(1))
THEN
2510 donestepping=.false.
2516 IF (donestepping)
THEN
2551# ifdef FORWARD_FLUXES
2576 IF (
fourdvar(ng)%NLPenalty(i).ne.0.0_r8)
THEN
2587 SELECT CASE (
dav(ng)%IOtype)
2590 &
'NL_fDataPenalty', &
2594 & ncid =
dav(ng)%ncid)
2596# if defined PIO_LIB && defined DISTRIBUTE
2599 &
'NL_fDataPenalty', &
2603 & piofile =
dav(ng)%pioFile)
2619 DO thread=thread_range
2625 10
FORMAT (a,
'_outer',i0,
'.nc')
2626 20
FORMAT (/,1x,a,1x,
'ROMS: started time-stepping:', &
2627 &
' (Grid: ',i0,
', Outer: ',i2.2,
', Inner: ',i3.3, &
2628 ', TimeSteps: ',i0,
' - ',i0,
')',/)
2629 30
FORMAT (
' (',i3.3,
',',i3.3,
'): ',a,
' data penalty, Jdata = ', &
2630 & 1p,e17.10,0p,t68,a)
2654 integer,
intent(in) :: ng
2659 integer :: nrmrec, stdrec, tindex
2661 character (len=*),
parameter :: myfile = &
2662 & __FILE__//
", prior_error"
2709# ifdef ADJUST_BOUNDARY
2719# if defined ADJUST_WSTRESS || defined ADJUST_STFLUX
2736 IF (ldefstd(ng))
THEN
2760# ifdef ADJUST_BOUNDARY
2765# if defined ADJUST_WSTRESS || defined ADJUST_STFLUX
2788# ifdef ADJUST_BOUNDARY
2793# if defined ADJUST_WSTRESS || defined ADJUST_STFLUX
2803# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F || \
2827 real(
dp),
intent(in) :: runinterval
2833 integer :: my_inner, my_outer, ng, tile
2834 integer :: fcount, rec
2836 character (len=8) :: driver =
'rbl4dvar'
2838 character (len=*),
parameter :: myfile = &
2839 & __FILE__//
", posterior_error"
2843# if defined POSTERIOR_ERROR_I || defined POSTERIOR_ERROR_F
2858# ifdef ADJUST_BOUNDARY
2868 var_oloop :
DO my_outer=1,
nouter
2899# ifdef ADJUST_BOUNDARY
2907# ifdef POSTERIOR_EOFS
2925 trace_oloop :
DO my_outer=1,
nouter
2929 trace_iloop :
DO my_inner=1,
nposti
2966 post_oloop :
DO my_outer=1,
nouter
2976 adm(ng)%Nrec(fcount)=0
2979 post_iloop :
DO my_inner=0,
nposti
2987 IF (
inner.ne.0)
THEN
2992 & __line__, myfile))
RETURN
3002 & __line__, myfile))
RETURN
3025# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
3028# ifdef ADJUST_BOUNDARY
3070# if defined PIO_LIB && defined DISTRIBUTE
3072 his(ng)%pioFile%fh=-1
3077# ifdef POSTERIOR_EOFS
3079 10
FORMAT (/,
' <<<< Posterior Analysis Error Covariance Matrix', &
3080 &
' Estimation >>>>',/)
subroutine ad_initial(ng)
subroutine ad_main3d(runinterval)
subroutine edit_multifile(task)
subroutine main3d(runinterval)
subroutine, public ad_def_his(ng, ldef)
subroutine, public ad_wrt_his(ng, tile)
subroutine, public comp_jb0(ng, tile, model, outloop, ltlm, ladj)
subroutine, public aug_oper(ng, tile, linp, lout)
subroutine, public congrad(ng, model, outloop, innloop, ninnloop, lcgini)
subroutine, public cg_read_congrad(ng, model, outloop)
subroutine, public convolve(driver, rini, rold, rnew)
subroutine, public error_covariance(model, driver, outloop, innloop, rbck, rini, rold, rnew, rec1, rec2, lposterior)
subroutine, public def_error(ng)
subroutine, public def_hessian(ng)
subroutine, public def_impulse(ng)
subroutine, public def_ini(ng)
subroutine, public def_mod(ng)
subroutine, public def_norm(ng, model, ifile)
subroutine, public frc_iau_ini(ng, tile, irec)
subroutine, public get_state(ng, model, msg, s, inirec, tindex)
subroutine, public load_tltoad(ng, tile, linp, lout, add)
subroutine, public ini_adjust(ng, tile, linp, lout)
subroutine, public initialize_boundary(ng, tile, model)
subroutine, public initialize_forces(ng, tile, model)
type(t_fourdvar), dimension(:), allocatable fourdvar
integer, dimension(:), allocatable ndatum
logical, dimension(:), allocatable wrtmisfit
integer, dimension(:), allocatable nobsvar
real(r8), dimension(:), allocatable obsval
logical, dimension(:), allocatable havenlmod
logical, dimension(:), allocatable wrttlmod
logical, dimension(:), allocatable wrtnlmod
logical, dimension(:), allocatable wrtforce
real(r8), dimension(:), allocatable obsscale
real(r8), dimension(:), allocatable obserr
real(r8), dimension(:), allocatable jb0
logical, dimension(:), allocatable wrtobsscale
real(r8), dimension(:), allocatable nlmodval
real(r8), dimension(:), allocatable nlincrement
character(len=40), dimension(:), allocatable obsname
logical, dimension(:), allocatable wrtzetaref
type(t_io), dimension(:,:), allocatable std
type(t_io), dimension(:), allocatable his
type(t_io), dimension(:,:), allocatable nrm
type(t_io), dimension(:), allocatable adm
type(t_io), dimension(:), allocatable obs
type(t_io), dimension(:), allocatable tlf
type(t_io), dimension(:), allocatable itl
type(t_io), dimension(:), allocatable dav
type(t_io), dimension(:), allocatable qck
type(t_io), dimension(:), allocatable fwd
type(t_io), dimension(:), allocatable rst
type(t_io), dimension(:), allocatable ini
type(t_io), dimension(:), allocatable avg
character(len=256) sourcefile
type(t_io), dimension(:), allocatable dia
subroutine, public initialize_mixing(ng, tile, model)
integer, parameter io_nf90
integer, dimension(:), allocatable idefqck
integer, dimension(:), allocatable idefavg
integer, parameter io_pio
integer, dimension(:), allocatable idefdia
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:), allocatable idefhis
subroutine, public netcdf_get_dim(ng, model, ncname, ncid, dimname, dimsize, dimid)
subroutine, public initialize_ocean(ng, tile, model)
integer, dimension(:), allocatable first_tile
integer, dimension(:), allocatable last_tile
subroutine, public pio_netcdf_get_dim(ng, model, ncname, piofile, dimname, dimsize, dimid)
logical, dimension(:,:), allocatable lwrtnrm
logical, dimension(:), allocatable lwrtqck
logical, dimension(:), allocatable lwrtdia
logical, dimension(:), allocatable lreadqck
integer, dimension(:), allocatable ntimes
logical, dimension(:), allocatable ldefitl
integer, dimension(:), allocatable iic
logical, dimension(:), allocatable ldeferr
logical, dimension(:), allocatable lreadstd
real(dp), dimension(:), allocatable dt
logical, dimension(:), allocatable ldefhss
integer, dimension(:), allocatable nobc
logical, dimension(:), allocatable setgridconfig
real(dp), dimension(:), allocatable timeiau
logical, dimension(:), allocatable balance
logical, dimension(:), allocatable ldefdia
logical, dimension(:), allocatable ldeftlf
integer, dimension(:), allocatable frcrec
logical, dimension(:), allocatable lreadfrc
integer, dimension(:), allocatable nfrec
logical, dimension(:), allocatable ldefini
logical, dimension(:), allocatable ldefavg
logical, dimension(:), allocatable ldefqck
real(dp), dimension(:), allocatable tdays
logical, dimension(:), allocatable lwrtavg
logical, dimension(:), allocatable ldefadj
logical, dimension(:), allocatable frequentimpulse
logical, dimension(:), allocatable ldefhis
real(dp), parameter sec2day
integer, dimension(:), allocatable ntend
logical, dimension(:), allocatable ldefmod
logical, dimension(:,:), allocatable ldefnrm
logical, dimension(:), allocatable iauswitch
logical, dimension(:), allocatable lwrtstate2d
real(dp), dimension(:,:), allocatable obc_time
logical, dimension(:), allocatable sporadicimpulse
logical, dimension(:), allocatable lwrthis
real(dp), dimension(:), allocatable time
integer, dimension(:), allocatable nsff
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable step_counter
real(dp), dimension(:,:), allocatable sf_time
integer, dimension(:), allocatable nbrec
integer, dimension(:), allocatable nadj
logical, dimension(:), allocatable lreadfwd
real(dp), dimension(:), allocatable initime
logical, dimension(:), allocatable lreadblk
integer, dimension(:), allocatable lold
integer, dimension(:), allocatable lbout
integer, dimension(:), allocatable kstp
integer, dimension(:), allocatable lnew
integer, dimension(:), allocatable lfout
integer, dimension(:), allocatable nstp
subroutine, public normalization(ng, tile, ifac)
subroutine posterior_eofs(ng, tile, model, lbi, ubi, lbj, ubj, lbij, ubij, imins, imaxs, jmins, jmaxs, lold, lnew, lwrk, innloop, outloop, rmask, umask, vmask, nl_t_obc, nl_u_obc, nl_v_obc, nl_ubar_obc, nl_vbar_obc, nl_zeta_obc, nl_ustr, nl_vstr, nl_tflux, nl_t, nl_u, nl_v, nl_ubar, nl_vbar, nl_zeta, tl_t_obc, tl_u_obc, tl_v_obc, tl_ubar_obc, tl_vbar_obc, tl_zeta_obc, tl_ustr, tl_vstr, tl_tflux, tl_t, tl_u, tl_v, tl_ubar, tl_vbar, tl_zeta, ad_t_obc, ad_u_obc, ad_v_obc, ad_ubar_obc, ad_vbar_obc, ad_zeta_obc, ad_ustr, ad_vstr, ad_tflux, ad_t, ad_u, ad_v, ad_ubar, ad_vbar, ad_zeta)
subroutine, public posterior(ng, tile, model, innloop, outloop, ltrace)
subroutine, public posterior_var(ng, tile, model, outloop)
subroutine, public random_ic(ng, tile, model, innloop, outloop, lout, ltrace)
subroutine, public increment(my_outer, runinterval)
subroutine, public background(my_outer, runinterval)
subroutine, public posterior_error(runinterval)
subroutine, public background_initialize(my_outer)
subroutine, public prior_error(ng)
subroutine, public analysis(my_outer, runinterval)
subroutine, public analysis_initialize(my_outer)
subroutine, public rpcg_lanczos(ng, model, outloop, innloop, ninnloop, lcgini)
subroutine, public cg_read_rpcg(ng, model, outloop)
logical function, public founderror(flag, noerr, line, routine)
subroutine, public sum_grad(ng, tile, linp, lout)
subroutine, public sum_imp(ng, tile, lout)
subroutine, public tl_def_ini(ng)
subroutine, public tl_wrt_ini(ng, tile, tindex, outrec)
subroutine, public wrt_aug_imp(ng, tile, model, iinp, iout)
subroutine, public wrt_error(ng, tile, kout, nout)
subroutine, public wrt_hessian(ng, tile, kout, nout)
subroutine, public wrt_impulse(ng, tile, model, inpncname)
subroutine, public wrt_frc_ad(ng, tile, tindex, outrec)
subroutine, public wrt_ini(ng, tile, tindex, outrec)
subroutine, public biconj(ng, tile, model, lbck)
subroutine, public balance_ref(ng, tile, lbck)
subroutine set_grid(ng, model)
recursive subroutine wclock_off(ng, model, region, line, routine)
recursive subroutine wclock_on(ng, model, region, line, routine)
subroutine tl_initial(ng)
subroutine tl_main3d(runinterval)