3#if defined WEAK_CONSTRAINT && \
4 (defined posterior_error_f || defined posterior_error_i)
25# ifdef ADJUST_BOUNDARY
39# ifdef ADJUST_BOUNDARY
44# ifdef ADJUST_BOUNDARY
54# if defined PIO_LIB && defined DISTRIBUTE
66 integer,
intent(in) :: ng, tile, kout, nout
70# ifdef ADJUST_BOUNDARY
73 integer :: lbi, ubi, lbj, ubj
75 character (len=*),
parameter :: myfile = &
82# ifdef ADJUST_BOUNDARY
91 SELECT CASE (
err(ng)%IOtype)
94# ifdef ADJUST_BOUNDARY
99# if defined PIO_LIB && defined DISTRIBUTE
102# ifdef ADJUST_BOUNDARY
105 & lbi, ubi, lbj, ubj)
113 10
FORMAT (
' WRT_ERROR - Illegal output file type, io_type = ',i0, &
114 & /,13x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
121# ifdef ADJUST_BOUNDARY
124 & LBi, UBi, LBj, UBj)
131 integer,
intent(in) :: ng, tile, kout, nout
132# ifdef ADJUST_BOUNDARY
133 integer,
intent(in) :: lbij, ubij
135 integer,
intent(in) :: lbi, ubi, lbj, ubj
139 integer :: fcount, i, j, gfactor, gtype, status
146 character (len=*),
parameter :: myfile = &
147 & __FILE__//
", wrt_error_nf90"
160# if defined WRITE_WATER && defined MASKING
168 err(ng)%Rindex=
err(ng)%Rindex+1
169 fcount=
err(ng)%Fcount
170 err(ng)%Nrec(fcount)=
err(ng)%Nrec(fcount)+1
192 & (/
err(ng)%Rindex/), (/1/), &
193 & ncid =
err(ng)%ncid, &
202 & ncid =
err(ng)%ncid)
208 & ncid =
err(ng)%ncid)
214 & ncid =
err(ng)%ncid)
223 &
err(ng)%Rindex, gtype, &
224 & lbi, ubi, lbj, ubj, scale, &
226 &
grid(ng) % rmask, &
228 &
ocean(ng)% tl_zeta(:,:,kout))
229 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
238# ifdef ADJUST_BOUNDARY
248 & lbij, ubij,
nbrec(ng), scale, &
249 &
boundary(ng) % tl_zeta_obc(lbij:,:,:, &
251 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
269 &
err(ng)%Rindex, gtype, &
270 & lbi, ubi, lbj, ubj, scale, &
272 &
grid(ng) % umask_full, &
274 &
ocean(ng) % tl_ubar(:,:,kout))
275 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
284# ifdef ADJUST_BOUNDARY
294 & lbij, ubij,
nbrec(ng), scale, &
295 &
boundary(ng) % tl_ubar_obc(lbij:,:,:, &
297 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
315 &
err(ng)%Rindex, gtype, &
316 & lbi, ubi, lbj, ubj, scale, &
318 &
grid(ng) % vmask_full, &
320 &
ocean(ng) % tl_vbar(:,:,kout))
321 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
330# ifdef ADJUST_BOUNDARY
340 & lbij, ubij,
nbrec(ng), scale, &
341 &
boundary(ng) % tl_vbar_obc(lbij:,:,:, &
343 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
363 &
err(ng)%Rindex, gtype, &
364 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
366 &
grid(ng) % umask_full, &
368 &
ocean(ng) % tl_u(:,:,:,nout))
369 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
378# ifdef ADJUST_BOUNDARY
388 & lbij, ubij, 1,
n(ng),
nbrec(ng), scale, &
389 &
boundary(ng) % tl_u_obc(lbij:,:,:,:, &
391 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
409 &
err(ng)%Rindex, gtype, &
410 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
412 &
grid(ng) % vmask_full, &
414 &
ocean(ng) % tl_v(:,:,:,nout))
415 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
424# ifdef ADJUST_BOUNDARY
434 & lbij, ubij, 1,
n(ng),
nbrec(ng), scale, &
435 &
boundary(ng) % tl_v_obc(lbij:,:,:,:, &
437 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
455 &
err(ng)%Tid(itrc), &
456 &
err(ng)%Rindex, gtype, &
457 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
459 &
grid(ng) % rmask, &
461 &
ocean(ng) % tl_t(:,:,:,nout,itrc))
462 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
473# ifdef ADJUST_BOUNDARY
484 & lbij, ubij, 1,
n(ng),
nbrec(ng), &
486 &
boundary(ng) % tl_t_obc(lbij:,:,:,:, &
488 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
513 &
err(ng)%Rindex, gtype, &
514 & lbi, ubi, lbj, ubj, 1,
nfrec(ng), scale, &
516 &
grid(ng) % rmask, &
518 &
forces(ng) % tl_tflux(:,:,:,kout,itrc))
519 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
532# ifdef ADJUST_WSTRESS
542 &
err(ng)%Rindex, gtype, &
543 & lbi, ubi, lbj, ubj, 1,
nfrec(ng), scale, &
545 &
grid(ng) % umask, &
547 &
forces(ng) % tl_ustr(:,:,:,kout))
548 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
563 &
err(ng)%Rindex, gtype, &
564 & lbi, ubi, lbj, ubj, 1,
nfrec(ng), scale, &
566 &
grid(ng) % vmask, &
568 &
forces(ng) % tl_vstr(:,:,:,kout))
569 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
587 10
FORMAT (2x,
'WRT_ERROR_NF90 - writing error', t42, &
590 &
'fields (Index=',i1,
',',i1,
') in record = ',i0,t92,i2.2)
592 &
'fields (Index=',i1,
',',i1,
') in record = ',i0)
596 &
'fields (Index=',i1,
') in record = ',i0,t92,i2.2)
598 &
'fields (Index=',i1,
') in record = ',i0)
601 20
FORMAT (/,
' WRT_ERROR_NF90 - error while writing variable: ',a, &
602 & /,18x,
'into 4DVar error NetCDF file for time record: ',i0)
607# if defined PIO_LIB && defined DISTRIBUTE
611# ifdef ADJUST_BOUNDARY
614 & LBi, UBi, LBj, UBj)
621 integer,
intent(in) :: ng, tile, kout, nout
622# ifdef ADJUST_BOUNDARY
623 integer,
intent(in) :: lbij, ubij
625 integer,
intent(in) :: lbi, ubi, lbj, ubj
629 integer :: fcount, i, ifield, j, status
636 character (len=*),
parameter :: myfile = &
637 & __FILE__//
", wrt_error_nf90"
639 TYPE (io_desc_t),
pointer :: iodesc
651 err(ng)%Rindex=
err(ng)%Rindex+1
652 fcount=
err(ng)%Fcount
653 err(ng)%Nrec(fcount)=
err(ng)%Nrec(fcount)+1
675 & (/
err(ng)%Rindex/), (/1/), &
676 & piofile =
err(ng)%pioFile, &
685 & piofile =
err(ng)%pioFile)
691 & piofile =
err(ng)%pioFile)
697 & piofile =
err(ng)%pioFile)
703 IF (
err(ng)%pioVar(
idfsur)%dkind.eq.pio_double)
THEN
713 & lbi, ubi, lbj, ubj, scale, &
715 &
grid(ng) % rmask, &
717 &
ocean(ng)% tl_zeta(:,:,kout))
718 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
727# ifdef ADJUST_BOUNDARY
745 & lbij, ubij,
nbrec(ng), scale, &
746 &
boundary(ng) % tl_zeta_obc(lbij:,:,:, &
748 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
763 IF (
err(ng)%pioVar(
idubar)%dkind.eq.pio_double)
THEN
773 & lbi, ubi, lbj, ubj, scale, &
775 &
grid(ng) % umask_full, &
777 &
ocean(ng) % tl_ubar(:,:,kout))
778 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
787# ifdef ADJUST_BOUNDARY
805 & lbij, ubij,
nbrec(ng), scale, &
806 &
boundary(ng) % tl_ubar_obc(lbij:,:,:, &
808 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
823 IF (
err(ng)%pioVar(
idvbar)%dkind.eq.pio_double)
THEN
833 & lbi, ubi, lbj, ubj, scale, &
835 &
grid(ng) % vmask_full, &
837 &
ocean(ng) % tl_vbar(:,:,kout))
838 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
847# ifdef ADJUST_BOUNDARY
865 & lbij, ubij,
nbrec(ng), scale, &
866 &
boundary(ng) % tl_vbar_obc(lbij:,:,:, &
868 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
885 IF (
err(ng)%pioVar(
iduvel)%dkind.eq.pio_double)
THEN
895 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
897 &
grid(ng) % umask_full, &
899 &
ocean(ng) % tl_u(:,:,:,nout))
900 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
909# ifdef ADJUST_BOUNDARY
927 & lbij, ubij, 1,
n(ng),
nbrec(ng), scale, &
928 &
boundary(ng) % tl_u_obc(lbij:,:,:,:, &
930 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
945 IF (
err(ng)%pioVar(
idfsur)%dkind.eq.pio_double)
THEN
955 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
957 &
grid(ng) % vmask_full, &
959 &
ocean(ng) % tl_v(:,:,:,nout))
960 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
969# ifdef ADJUST_BOUNDARY
987 & lbij, ubij, 1,
n(ng),
nbrec(ng), scale, &
988 &
boundary(ng) % tl_v_obc(lbij:,:,:,:, &
990 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1006 IF (
err(ng)%pioTrc(itrc)%dkind.eq.pio_double)
THEN
1013 &
err(ng)%pioTrc(itrc), &
1016 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
1018 &
grid(ng) % rmask, &
1020 &
ocean(ng) % tl_t(:,:,:,nout,itrc))
1021 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1032# ifdef ADJUST_BOUNDARY
1040 IF (
err(ng)%pioVar(ifield)%dkind.eq.pio_double)
THEN
1047 &
err(ng)%pioFile, &
1048 &
vname(1,ifield), &
1049 &
err(ng)%pioVar(ifield), &
1052 & lbij, ubij, 1,
n(ng),
nbrec(ng), &
1054 &
boundary(ng) % tl_t_obc(lbij:,:,:,:, &
1056 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1068# ifdef ADJUST_STFLUX
1077 IF (
err(ng)%pioVar(
idtsur(itrc))%dkind.eq.pio_double)
THEN
1087 & lbi, ubi, lbj, ubj, 1,
nfrec(ng), scale, &
1089 &
grid(ng) % rmask, &
1091 &
forces(ng) % tl_tflux(:,:,:,kout,itrc))
1092 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1105# ifdef ADJUST_WSTRESS
1112 IF (
err(ng)%pioVar(
idusms)%dkind.eq.pio_double)
THEN
1122 & lbi, ubi, lbj, ubj, 1,
nfrec(ng), scale, &
1124 &
grid(ng) % umask, &
1126 &
forces(ng) % tl_ustr(:,:,:,kout))
1127 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1139 IF (
err(ng)%pioVar(
idvsms)%dkind.eq.pio_double)
THEN
1149 & lbi, ubi, lbj, ubj, 1,
nfrec(ng), scale, &
1151 &
grid(ng) % vmask, &
1153 &
forces(ng) % tl_vstr(:,:,:,kout))
1154 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1172 10
FORMAT (2x,
'WRT_ERROR_PIO - writing error', t42, &
1175 &
'fields (Index=',i1,
',',i1,
') in record = ',i0,t92,i2.2)
1177 &
'fields (Index=',i1,
',',i1,
') in record = ',i0)
1181 &
'fields (Index=',i1,
') in record = ',i0,t92,i2.2)
1183 &
'fields (Index=',i1,
') in record = ',i0)
1186 20
FORMAT (/,
' WRT_ERROR_PIO - error while writing variable: ',a, &
1187 & /,18x,
'into 4DVar error NetCDF file for time record: ',i0)
type(t_boundary), dimension(:), allocatable boundary
type(t_forces), dimension(:), allocatable forces
real(r8), dimension(:,:), allocatable zlanczos_inv
real(r8), dimension(:,:), allocatable zlanczos_err
real(r8), dimension(:,:), allocatable zlanczos_coef
type(t_grid), dimension(:), allocatable grid
type(t_io), dimension(:), allocatable err
character(len=256) sourcefile
integer, parameter io_nf90
integer, dimension(:), allocatable idsbry
integer, parameter io_pio
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
character(len=maxlen), dimension(6, 0:nv) vname
subroutine, public netcdf_sync(ng, model, ncname, ncid)
type(t_ocean), dimension(:), allocatable ocean
integer, dimension(:), allocatable n
type(t_bounds), dimension(:), allocatable bounds
integer, parameter r3dvar
integer, parameter u3dvar
integer, parameter u2dvar
integer, dimension(:), allocatable nt
integer, parameter r2dvar
integer, parameter v2dvar
integer, parameter v3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dobc
type(io_desc_t), dimension(:), pointer iodesc_dp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_u3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_v3dobc
subroutine, public pio_netcdf_sync(ng, model, ncname, piofile)
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u3dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_r3dobc
type(io_desc_t), dimension(:), pointer iodesc_dp_u3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_u3dobc
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dobc
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r3dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_v3dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dfrc
logical, dimension(:,:,:), allocatable lobc
logical, dimension(:,:), allocatable lstflux
integer, dimension(:), allocatable nfrec
real(dp), dimension(:), allocatable time
integer, dimension(:), allocatable nbrec
logical function, public founderror(flag, noerr, line, routine)
subroutine, public wrt_error(ng, tile, kout, nout)
subroutine, private wrt_error_pio(ng, tile, kout, nout, lbij, ubij, lbi, ubi, lbj, ubj)
subroutine, private wrt_error_nf90(ng, tile, kout, nout, lbij, ubij, lbi, ubi, lbj, ubj)