155     &                           OutRec, i2d, i3d, stime,               &
 
  156# ifdef ADJUST_BOUNDARY
 
  158     &                           LBi, UBi, LBj, UBj,                    &
 
  167      integer, 
intent(in) :: ng, tile, model, outrec, i2d, i3d
 
  168# ifdef ADJUST_BOUNDARY 
  169      integer, 
intent(in) :: lbij, ubij
 
  171      integer :: lbi, ubi, lbj, ubj
 
  173      real(dp), 
intent(in) :: stime
 
  175      character (len=*), 
intent(in) :: label
 
  181      integer :: sstr, send
 
  182      integer :: fcount, gfactor, gtype, ncid, omode, status
 
  184      integer :: i, itrc, j, k
 
  187      real(r8) :: fmin, fmax
 
  191      character (len=15) :: tstring
 
  192      character (len=22) :: t_code
 
  193      character (len=50) :: string
 
  195      character (len=*), 
parameter :: myfile =                          &
 
  196     &  __FILE__//
", wrt_state_nf90" 
  207      CALL wclock_on (ng, model, 81, __line__, myfile)
 
  213      CALL netcdf_open (ng, model, s(ng)%name, omode, ncid)
 
  219# if defined WRITE_WATER && defined MASKING 
  227      s(ng)%Rindex=s(ng)%Rindex+1
 
  229      s(ng)%Nrec(fcount)=s(ng)%Nrec(fcount)+1
 
  235        IF (model.eq.
inlm) 
THEN 
  236          string=
'writing NLM state fields,' 
  237        ELSE IF (model.eq.
itlm) 
THEN 
  238          string=
'writing TLM state fields,' 
  239        ELSE IF (model.eq.
iadm) 
THEN 
  240          string=
'writing ADM state fields,' 
  241        ELSE IF (model.eq.
irpm) 
THEN 
  242          string=
'writing RPM state fields,' 
  246        WRITE (tstring,
'(f15.4)') stime*
sec2day 
  247        WRITE (
stdout,10) trim(label), trim(string), t_code,            &
 
  248     &                    ng, trim(adjustl(tstring)), trim(s(ng)%name), &
 
  255        tval(1)=real(outrec,dp)*
day2sec 
  261     &                      (/outrec/), (/1/),                          &
 
  263     &                      varid = s(ng)%Vid(
idtime))
 
  270      IF (model.eq.
itlm) 
THEN 
  274     &                     lbi, ubi, lbj, ubj, scale,                   &
 
  276     &                     
grid(ng) % rmask,                            &
 
  279     &                     
ocean(ng) % tl_zeta(:,:,i2d),                &
 
  280     &                     setfillval = .false.,                        &
 
  284     &                     
ocean(ng) % tl_zeta(:,:,i2d),                &
 
  288      ELSE IF (model.eq.
iadm) 
THEN 
  292     &                     lbi, ubi, lbj, ubj, scale,                   &
 
  294     &                     
grid(ng) % rmask,                            &
 
  297     &                     
ocean(ng) % ad_zeta(:,:,i2d),                &
 
  298     &                     setfillval = .false.,                        &
 
  302     &                     
ocean(ng) % ad_zeta(:,:,i2d),                &
 
  307      IF (status.ne.nf90_noerr) 
THEN 
  310     &                      trim(s(ng)%name), outrec
 
  321# ifdef ADJUST_BOUNDARY 
  327        IF (model.eq.
itlm) 
THEN 
  332     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
  333     &                           
boundary(ng) % tl_zeta_obc(lbij:,:,:,  &
 
  337        ELSE IF (model.eq.
iadm) 
THEN 
  342     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
  343     &                           
boundary(ng) % ad_zeta_obc(lbij:,:,:,  &
 
  348        IF (status.ne.nf90_noerr) 
THEN 
  351     &                        trim(label), trim(s(ng)%name), outrec
 
  369      IF (model.eq.
itlm) 
THEN 
  373     &                     lbi, ubi, lbj, ubj, scale,                   &
 
  375     &                     
grid(ng) % umask,                            &
 
  377     &                     
ocean(ng) % tl_ubar(:,:,i2d),                &
 
  381      ELSE IF (model.eq.
iadm) 
THEN 
  385     &                     lbi, ubi, lbj, ubj, scale,                   &
 
  387     &                     
grid(ng) % umask,                            &
 
  389     &                     
ocean(ng) % ad_ubar(:,:,i2d),                &
 
  393      IF (status.ne.nf90_noerr) 
THEN 
  396     &                      trim(s(ng)%name), outrec
 
  407#  ifdef ADJUST_BOUNDARY 
  413        IF (model.eq.
itlm) 
THEN 
  418     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
  419     &                           
boundary(ng) % tl_ubar_obc(lbij:,:,:,  &
 
  423        ELSE IF (model.eq.
iadm) 
THEN 
  428     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
  429     &                           
boundary(ng) % ad_ubar_obc(lbij:,:,:,  &
 
  434        IF (status.ne.nf90_noerr) 
THEN 
  437     &                        trim(label), trim(s(ng)%name), outrec
 
  455      IF (model.eq.
itlm) 
THEN 
  459     &                     lbi, ubi, lbj, ubj, scale,                   &
 
  461     &                     
grid(ng) % vmask,                            &
 
  463     &                     
ocean(ng) % tl_vbar(:,:,i2d),                &
 
  466      ELSE IF (model.eq.
iadm) 
THEN 
  470     &                     lbi, ubi, lbj, ubj, scale,                   &
 
  472     &                     
grid(ng) % vmask,                            &
 
  474     &                     
ocean(ng) % ad_vbar(:,:,i2d),                &
 
  478      IF (status.ne.nf90_noerr) 
THEN 
  481     &                      trim(s(ng)%name), outrec
 
  492# ifdef ADJUST_BOUNDARY 
  498        IF (model.eq.
itlm) 
THEN 
  503     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
  504     &                           
boundary(ng) % tl_vbar_obc(lbij:,:,:,  &
 
  508        ELSE IF (model.eq.
iadm) 
THEN 
  513     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
  514     &                           
boundary(ng) % ad_vbar_obc(lbij:,:,:,  &
 
  519        IF (status.ne.nf90_noerr) 
THEN 
  522     &                        trim(label), trim(s(ng)%name), outrec
 
  536# ifdef ADJUST_WSTRESS 
  544      IF (model.eq.
itlm) 
THEN 
  548     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
  550     &                     
grid(ng) % umask,                            &
 
  555      ELSE IF (model.eq.
iadm) 
THEN 
  559     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
  561     &                     
grid(ng) % umask,                            &
 
  568      IF (status.ne.nf90_noerr) 
THEN 
  571     &                      trim(s(ng)%name), 
lfout(ng)
 
  586      IF (model.eq.
itlm) 
THEN 
  590     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
  592     &                     
grid(ng) % vmask,                            &
 
  598      ELSE IF (model.eq.
iadm) 
THEN 
  602     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
  604     &                     
grid(ng) % vmask,                            &
 
  610      IF (status.ne.nf90_noerr) 
THEN 
  613     &                      trim(s(ng)%name), 
lfout(ng)
 
  631      IF (model.eq.
itlm) 
THEN 
  635     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
  637     &                     
grid(ng) % umask,                            &
 
  639     &                     
ocean(ng) % tl_u(:,:,:,i3d),                 &
 
  643      ELSE IF (model.eq.
iadm) 
THEN 
  647     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
  649     &                     
grid(ng) % umask,                            &
 
  651     &                     
ocean(ng) % ad_u(:,:,:,i3d),                 &
 
  655      IF (status.ne.nf90_noerr) 
THEN 
  658     &                      trim(s(ng)%name), outrec
 
  669#  ifdef ADJUST_BOUNDARY 
  675        IF (model.eq.
itlm) 
THEN 
  680     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
  681     &                           
boundary(ng) % tl_u_obc(lbij:,:,:,:,   &
 
  685        ELSE IF (model.eq.
iadm) 
THEN 
  690     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
  691     &                           
boundary(ng) % ad_u_obc(lbij:,:,:,:,   &
 
  696        IF (status.ne.nf90_noerr) 
THEN 
  699     &                        trim(label), trim(s(ng)%name), outrec
 
  717      IF (model.eq.
itlm) 
THEN 
  721     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
  723     &                     
grid(ng) % vmask,                            &
 
  725     &                     
ocean(ng) % tl_v(:,:,:,i3d),                 &
 
  728      ELSE IF (model.eq.
iadm) 
THEN 
  732     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
  734     &                     
grid(ng) % vmask,                            &
 
  736     &                     
ocean(ng) % ad_v(:,:,:,i3d),                 &
 
  740      IF (status.ne.nf90_noerr) 
THEN 
  743     &                      trim(s(ng)%name), outrec
 
  754#  ifdef ADJUST_BOUNDARY 
  760        IF (model.eq.
itlm) 
THEN 
  765     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
  766     &                           
boundary(ng) % ad_v_obc(lbij:,:,:,:,   &
 
  770        ELSE IF (model.eq.
iadm) 
THEN 
  775     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
  776     &                           
boundary(ng) % ad_v_obc(lbij:,:,:,:,   &
 
  781        IF (status.ne.nf90_noerr) 
THEN 
  784     &                        trim(label), trim(s(ng)%name), outrec
 
  803        IF (model.eq.
itlm) 
THEN 
  807     &                       lbi, ubi, lbj, ubj, 1, 
n(ng), scale,       &
 
  809     &                       
grid(ng) % rmask,                          &
 
  811     &                       
ocean(ng) % tl_t(:,:,:,i3d,itrc),          &
 
  814        ELSE IF (model.eq.
iadm) 
THEN 
  818     &                       lbi, ubi, lbj, ubj, 1, 
n(ng), scale,       &
 
  820     &                       
grid(ng) % rmask,                          &
 
  822     &                       
ocean(ng) % ad_t(:,:,:,i3d,itrc),          &
 
  826        IF (status.ne.nf90_noerr) 
THEN 
  829     &                        trim(label), trim(s(ng)%name), outrec
 
  842#  ifdef ADJUST_BOUNDARY 
  849          IF (model.eq.
itlm) 
THEN 
  854     &                             lbij, ubij, 1, 
n(ng), 
nbrec(ng),     &
 
  856     &                             
boundary(ng) % tl_t_obc(lbij:,:,:,:, &
 
  860          ELSE IF (model.eq.
iadm) 
THEN 
  865     &                             lbij, ubij, 1, 
n(ng), 
nbrec(ng),     &
 
  867     &                             
boundary(ng) % ad_t_obc(lbij:,:,:,:, &
 
  872          IF (status.ne.nf90_noerr) 
THEN 
  875     &                          trim(label), trim(s(ng)%name), outrec
 
  900          IF (model.eq.
itlm) 
THEN 
  902     &                         s(ng)%Vid(
idtsur(itrc)),                 &
 
  904     &                         lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale, &
 
  906     &                         
grid(ng) % rmask,                        &
 
  908     &                         
forces(ng)% tl_tflux(:,:,:,              &
 
  912          ELSE IF (model.eq.
iadm) 
THEN 
  914     &                         s(ng)%Vid(
idtsur(itrc)),                 &
 
  916     &                         lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale, &
 
  918     &                         
grid(ng) % rmask,                        &
 
  920     &                         
forces(ng)% ad_tflux(:,:,:,              &
 
  925          IF (status.ne.nf90_noerr) 
THEN 
  928     &                          trim(label), trim(s(ng)%name), 
lfout(ng)
 
  959      CALL wclock_off (ng, model, 81, __line__, myfile)
 
  962  10  
FORMAT (1x,a,
': WRT_STATE_NF90 - ',a,t75,a,                       &
 
  963     &        /,24x,
'(Grid ',i2.2,
', t = ',a,
', File: ',a,              &
 
  964     &        
', Index=',i1,
', Rec=',i0,
')',                            &
 
  965     &        /,24x,
'Called from ''',a,
'''')
 
  966  20  
FORMAT (/,
' WRT_STATE_NF90 - error while writing variable: ',a,   &
 
  967     &        /,18x,
'into ',a,
' NetCDF file: ',a,                       &
 
  968     &        /,18x,
'for time record: ',i0)
 
  969  30  
FORMAT (21x,
'- ',a,/,24x,
'(Min = ',1p,e15.8,                      &
 
  970     &        
' Max = ',1p,e15.8,
')')
 
 
  979     &                          OutRec, i2d, i3d, stime,                &
 
  980#  ifdef ADJUST_BOUNDARY
 
  982     &                          LBi, UBi, LBj, UBj,                     &
 
  991      integer, 
intent(in) :: ng, tile, model, outrec, i2d, i3d
 
  992#  ifdef ADJUST_BOUNDARY 
  993      integer, 
intent(in) :: lbij, ubij
 
  995      integer :: lbi, ubi, lbj, ubj
 
  997      real(dp), 
intent(in) :: stime
 
  999      character (len=*), 
intent(in) :: label
 
 1005      integer :: sstr, send
 
 1006      integer :: fcount, ifield, omode, status
 
 1008      integer :: i, itrc, j, k
 
 1011      real(r8) :: fmin, fmax
 
 1015      character (len=15) :: tstring
 
 1016      character (len=22) :: t_code
 
 1017      character (len=50) :: string
 
 1019      character (len=*), 
parameter :: myfile =                          &
 
 1020     &  __FILE__//
", wrt_state_pio" 
 1022      TYPE (io_desc_t), 
pointer :: iodesc
 
 1023      TYPE (file_desc_t) :: piofile
 
 1034      CALL wclock_on (ng, model, 81, __line__, myfile)
 
 1045      s(ng)%Rindex=s(ng)%Rindex+1
 
 1047      s(ng)%Nrec(fcount)=s(ng)%Nrec(fcount)+1
 
 1053        IF (model.eq.
inlm) 
THEN 
 1054          string=
'writing NLM state fields,' 
 1055        ELSE IF (model.eq.
itlm) 
THEN 
 1056          string=
'writing TLM state fields,' 
 1057        ELSE IF (model.eq.
iadm) 
THEN 
 1058          string=
'writing ADM state fields,' 
 1059        ELSE IF (model.eq.
irpm) 
THEN 
 1060          string=
'writing RPM state fields,' 
 1064        WRITE (tstring,
'(f15.4)') stime*
sec2day 
 1065        WRITE (
stdout,10) trim(label), trim(string), t_code,            &
 
 1066     &                    ng, trim(adjustl(tstring)), trim(s(ng)%name), &
 
 1073        tval(1)=real(outrec,dp)*
day2sec 
 1079     &                          (/outrec/), (/1/),                      &
 
 1080     &                          piofile = piofile,                      &
 
 1081     &                          piovar = s(ng)%pioVar(
idtime)%vd)
 
 1087      IF (s(ng)%pioVar(
idfsur)%dkind.eq.pio_double) 
THEN 
 1093      IF (model.eq.
itlm) 
THEN 
 1095     &                     s(ng)%pioVar(
idfsur), outrec,                &
 
 1097     &                     lbi, ubi, lbj, ubj, scale,                   &
 
 1099     &                     
grid(ng) % rmask,                            &
 
 1102     &                     
ocean(ng) % tl_zeta(:,:,i2d),                &
 
 1103     &                     setfillval = .false.,                        &
 
 1104     &                     minvalue = fmin,                             &
 
 1107     &                     
ocean(ng) % tl_zeta(:,:,i2d),                &
 
 1108     &                     minvalue = fmin,                             &
 
 1111      ELSE IF (model.eq.
iadm) 
THEN 
 1113     &                     s(ng)%pioVar(
idfsur), outrec,                &
 
 1115     &                     lbi, ubi, lbj, ubj, scale,                   &
 
 1117     &                     
grid(ng) % rmask,                            &
 
 1120     &                     
ocean(ng) % ad_zeta(:,:,i2d),                &
 
 1121     &                     setfillval = .false.,                        &
 
 1122     &                     minvalue = fmin,                             &
 
 1125     &                     
ocean(ng) % ad_zeta(:,:,i2d),                &
 
 1126     &                     minvalue = fmin,                             &
 
 1130      IF (status.ne.pio_noerr) 
THEN 
 1133     &                      trim(s(ng)%name), outrec
 
 1144#  ifdef ADJUST_BOUNDARY 
 1151        IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double) 
THEN 
 1157        IF (model.eq.
itlm) 
THEN 
 1159     &                           
vname(1,ifield),                       &
 
 1160     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1162     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
 1163     &                           
boundary(ng) % tl_zeta_obc(lbij:,:,:,  &
 
 1165     &                           minvalue = fmin,                       &
 
 1167        ELSE IF (model.eq.
iadm) 
THEN 
 1169     &                           
vname(1,ifield),                       &
 
 1170     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1172     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
 1173     &                           
boundary(ng) % ad_zeta_obc(lbij:,:,:,  &
 
 1175     &                           minvalue = fmin,                       &
 
 1178        IF (status.ne.pio_noerr) 
THEN 
 1181     &                        trim(label), trim(s(ng)%name), outrec
 
 1188            WRITE (
stdout,30) trim(
vname(2,ifield)), fmin, fmax
 
 1197      IF (s(ng)%pioVar(
idfsur)%dkind.eq.pio_double) 
THEN 
 1203      IF (model.eq.
itlm) 
THEN 
 1205     &                     s(ng)%pioVar(
idubar), outrec,                &
 
 1207     &                     lbi, ubi, lbj, ubj, scale,                   &
 
 1209     &                     
grid(ng) % umask,                            &
 
 1211     &                     
ocean(ng) % tl_ubar(:,:,i2d),                &
 
 1212     &                     minvalue = fmin,                             &
 
 1215      ELSE IF (model.eq.
iadm) 
THEN 
 1217     &                     s(ng)%pioVar(
idubar), outrec,                &
 
 1219     &                     lbi, ubi, lbj, ubj, scale,                   &
 
 1221     &                     
grid(ng) % umask,                            &
 
 1223     &                     
ocean(ng) % ad_ubar(:,:,i2d),                &
 
 1224     &                     minvalue = fmin,                             &
 
 1227      IF (status.ne.pio_noerr) 
THEN 
 1230     &                      trim(s(ng)%name), outrec
 
 1241#   ifdef ADJUST_BOUNDARY 
 1248        IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double) 
THEN 
 1254        IF (model.eq.
itlm) 
THEN 
 1256     &                           
vname(1,ifield),                       &
 
 1257     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1259     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
 1260     &                           
boundary(ng) % tl_ubar_obc(lbij:,:,:,  &
 
 1262     &                           minvalue = fmin,                       &
 
 1264        ELSE IF (model.eq.
iadm) 
THEN 
 1266     &                           
vname(1,ifield),                       &
 
 1267     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1269     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
 1270     &                           
boundary(ng) % ad_ubar_obc(lbij:,:,:,  &
 
 1272     &                           minvalue = fmin,                       &
 
 1275        IF (status.ne.pio_noerr) 
THEN 
 1278     &                        trim(label), trim(s(ng)%name), outrec
 
 1285            WRITE (
stdout,30) trim(
vname(2,ifield)), fmin, fmax
 
 1294      IF (s(ng)%pioVar(
idvbar)%dkind.eq.pio_double) 
THEN 
 1300      IF (model.eq.
itlm) 
THEN 
 1302     &                     s(ng)%pioVar(
idvbar), outrec,                &
 
 1304     &                     lbi, ubi, lbj, ubj, scale,                   &
 
 1306     &                     
grid(ng) % vmask,                            &
 
 1308     &                     
ocean(ng) % tl_vbar(:,:,i2d),                &
 
 1309     &                     minvalue = fmin,                             &
 
 1311      ELSE IF (model.eq.
iadm) 
THEN 
 1313     &                     s(ng)%pioVar(
idvbar), outrec,                &
 
 1315     &                     lbi, ubi, lbj, ubj, scale,                   &
 
 1317     &                     
grid(ng) % vmask,                            &
 
 1319     &                     
ocean(ng) % ad_vbar(:,:,i2d),                &
 
 1320     &                     minvalue = fmin,                             &
 
 1323      IF (status.ne.pio_noerr) 
THEN 
 1326     &                      trim(s(ng)%name), outrec
 
 1337#  ifdef ADJUST_BOUNDARY 
 1344        IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double) 
THEN 
 1350        IF (model.eq.
itlm) 
THEN 
 1352     &                           
vname(1,ifield),                       &
 
 1353     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1355     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
 1356     &                           
boundary(ng) % tl_vbar_obc(lbij:,:,:,  &
 
 1358     &                           minvalue = fmin,                       &
 
 1360        ELSE IF (model.eq.
iadm) 
THEN 
 1362     &                           
vname(1,ifield),                       &
 
 1363     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1365     &                           lbij, ubij, 
nbrec(ng), scale,          &
 
 1366     &                           
boundary(ng) % ad_vbar_obc(lbij:,:,:,  &
 
 1368     &                           minvalue = fmin,                       &
 
 1371        IF (status.ne.pio_noerr) 
THEN 
 1374     &                        trim(label), trim(s(ng)%name), outrec
 
 1381            WRITE (
stdout,30) trim(
vname(2,ifield)), fmin, fmax
 
 1387#  ifdef ADJUST_WSTRESS 
 1394      IF (s(ng)%pioVar(
idusms)%dkind.eq.pio_double) 
THEN 
 1400      IF (model.eq.
itlm) 
THEN 
 1402     &                     s(ng)%pioVar(
idusms), outrec,                &
 
 1404     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
 1406     &                     
grid(ng) % umask,                            &
 
 1409     &                     minvalue = fmin,                             &
 
 1411      ELSE IF (model.eq.
iadm) 
THEN 
 1413     &                     s(ng)%pioVar(
idusms), outrec,                &
 
 1415     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
 1417     &                     
grid(ng) % umask,                            &
 
 1420     &                     minvalue = fmin,                             &
 
 1423      IF (status.ne.pio_noerr) 
THEN 
 1426     &                      trim(s(ng)%name), 
lfout(ng)
 
 1440      IF (s(ng)%pioVar(
idvsms)%dkind.eq.pio_double) 
THEN 
 1446      IF (model.eq.
itlm) 
THEN 
 1448     &                     s(ng)%pioVar(
idvsms), outrec,                &
 
 1450     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
 1452     &                     
grid(ng) % vmask,                            &
 
 1455     &                     minvalue = fmin,                             &
 
 1458      ELSE IF (model.eq.
iadm) 
THEN 
 1460     &                     s(ng)%pioVar(
idvsms), outrec,                &
 
 1462     &                     lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale,     &
 
 1464     &                     
grid(ng) % vmask,                            &
 
 1467     &                     minvalue = fmin,                             &
 
 1470      IF (status.ne.pio_noerr) 
THEN 
 1473     &                      trim(s(ng)%name), 
lfout(ng)
 
 1490      IF (s(ng)%pioVar(
idfsur)%dkind.eq.pio_double) 
THEN 
 1496      IF (model.eq.
itlm) 
THEN 
 1498     &                     s(ng)%pioVar(
iduvel), outrec,                &
 
 1500     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
 1502     &                     
grid(ng) % umask,                            &
 
 1504     &                     
ocean(ng) % tl_u(:,:,:,i3d),                 &
 
 1505     &                     minvalue = fmin,                             &
 
 1508      ELSE IF (model.eq.
iadm) 
THEN 
 1510     &                     s(ng)%pioVar(
iduvel), outrec,                &
 
 1512     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
 1514     &                     
grid(ng) % umask,                            &
 
 1516     &                     
ocean(ng) % ad_u(:,:,:,i3d),                 &
 
 1517     &                     minvalue = fmin,                             &
 
 1520      IF (status.ne.pio_noerr) 
THEN 
 1523     &                      trim(s(ng)%name), outrec
 
 1534#   ifdef ADJUST_BOUNDARY 
 1541        IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double) 
THEN 
 1547        IF (model.eq.
itlm) 
THEN 
 1549     &                           
vname(1,ifield),                       &
 
 1550     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1552     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
 1553     &                           
boundary(ng) % tl_u_obc(lbij:,:,:,:,   &
 
 1555     &                           minvalue = fmin,                       &
 
 1557        ELSE IF (model.eq.
iadm) 
THEN 
 1559     &                           
vname(1,ifield),                       &
 
 1560     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1562     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
 1563     &                           
boundary(ng) % ad_u_obc(lbij:,:,:,:,   &
 
 1565     &                           minvalue = fmin,                       &
 
 1568        IF (status.ne.pio_noerr) 
THEN 
 1571     &                        trim(label), trim(s(ng)%name), outrec
 
 1578            WRITE (
stdout,30) trim(
vname(2,ifield)), fmin, fmax
 
 1587      IF (s(ng)%pioVar(
idvvel)%dkind.eq.pio_double) 
THEN 
 1593      IF (model.eq.
itlm) 
THEN 
 1595     &                     s(ng)%pioVar(
idvvel), outrec,                &
 
 1597     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
 1599     &                     
grid(ng) % vmask,                            &
 
 1601     &                     
ocean(ng) % tl_v(:,:,:,i3d),                 &
 
 1602     &                     minvalue = fmin,                             &
 
 1604      ELSE IF (model.eq.
iadm) 
THEN 
 1606     &                     s(ng)%pioVar(
idvvel), outrec,                &
 
 1608     &                     lbi, ubi, lbj, ubj, 1, 
n(ng), scale,         &
 
 1610     &                     
grid(ng) % vmask,                            &
 
 1612     &                     
ocean(ng) % ad_v(:,:,:,i3d),                 &
 
 1613     &                     minvalue = fmin,                             &
 
 1616      IF (status.ne.pio_noerr) 
THEN 
 1619     &                      trim(s(ng)%name), outrec
 
 1630#   ifdef ADJUST_BOUNDARY 
 1637        IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double) 
THEN 
 1643        IF (model.eq.
itlm) 
THEN 
 1645     &                           
vname(1,ifield),                       &
 
 1646     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1648     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
 1649     &                           
boundary(ng) % ad_v_obc(lbij:,:,:,:,   &
 
 1651     &                           minvalue = fmin,                       &
 
 1653        ELSE IF (model.eq.
iadm) 
THEN 
 1655     &                           
vname(1,ifield),                       &
 
 1656     &                           s(ng)%pioVar(ifield), outrec,          &
 
 1658     &                           lbij, ubij, 1, 
n(ng), 
nbrec(ng), scale,&
 
 1659     &                           
boundary(ng) % ad_v_obc(lbij:,:,:,:,   &
 
 1661     &                           minvalue = fmin,                       &
 
 1664        IF (status.ne.pio_noerr) 
THEN 
 1667     &                        trim(label), trim(s(ng)%name), outrec
 
 1674            WRITE (
stdout,30) trim(
vname(2,ifield)), fmin, fmax
 
 1684        IF (s(ng)%pioTrc(itrc)%dkind.eq.pio_double) 
THEN 
 1690        IF (model.eq.
itlm) 
THEN 
 1692     &                       s(ng)%pioTrc(itrc), outrec,                &
 
 1694     &                       lbi, ubi, lbj, ubj, 1, 
n(ng), scale,       &
 
 1696     &                       
grid(ng) % rmask,                          &
 
 1698     &                       
ocean(ng) % tl_t(:,:,:,i3d,itrc),          &
 
 1699     &                       minvalue = fmin,                           &
 
 1701        ELSE IF (model.eq.
iadm) 
THEN 
 1703     &                       s(ng)%pioTrc(itrc), outrec,                &
 
 1705     &                       lbi, ubi, lbj, ubj, 1, 
n(ng), scale,       &
 
 1707     &                       
grid(ng) % rmask,                          &
 
 1709     &                       
ocean(ng) % ad_t(:,:,:,i3d,itrc),          &
 
 1710     &                       minvalue = fmin,                           &
 
 1713        IF (status.ne.pio_noerr) 
THEN 
 1716     &                        trim(label), trim(s(ng)%name), outrec
 
 1729#   ifdef ADJUST_BOUNDARY 
 1737          IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double) 
THEN 
 1743          IF (model.eq.
itlm) 
THEN 
 1745     &                              
vname(1,ifield),                    &
 
 1746     &                              s(ng)%pioVar(ifield),               &
 
 1748     &                              lbij, ubij, 1, 
n(ng), 
nbrec(ng),    &
 
 1750     &                              
boundary(ng) % tl_t_obc(lbij:,:,:,:,&
 
 1751     &                                                
lbout(ng),itrc),  &
 
 1752     &                              minvalue = fmin,                    &
 
 1754          ELSE IF (model.eq.
iadm) 
THEN 
 1756     &                              
vname(1,ifield),                    &
 
 1757     &                              s(ng)%pioVar(ifield),               &
 
 1759     &                              lbij, ubij, 1, 
n(ng), 
nbrec(ng),    &
 
 1761     &                              
boundary(ng) % ad_t_obc(lbij:,:,:,:,&
 
 1762     &                                                
lbout(ng),itrc),  &
 
 1763     &                              minvalue = fmin,                    &
 
 1766          IF (status.ne.pio_noerr) 
THEN 
 1769     &                          trim(label), trim(s(ng)%name), outrec
 
 1776              WRITE (
stdout,30) trim(
vname(2,ifield)), fmin, fmax
 
 1783#   ifdef ADJUST_STFLUX 
 1793          IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double) 
THEN 
 1799          IF (model.eq.
itlm) 
THEN 
 1801     &                         s(ng)%pioVar(ifield),                    &
 
 1803     &                         lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale, &
 
 1805     &                         
grid(ng) % rmask,                        &
 
 1807     &                         
forces(ng)% tl_tflux(:,:,:,              &
 
 1808     &                                              
lfout(ng),itrc),    &
 
 1809     &                         minvalue = fmin,                         &
 
 1811          ELSE IF (model.eq.
iadm) 
THEN 
 1813     &                         s(ng)%pioVar(ifield),                    &
 
 1815     &                         lbi, ubi, lbj, ubj, 1, 
nfrec(ng), scale, &
 
 1817     &                         
grid(ng) % rmask,                        &
 
 1819     &                         
forces(ng)% ad_tflux(:,:,:,              &
 
 1820     &                                              
lfout(ng),itrc),    &
 
 1821     &                         minvalue = fmin,                         &
 
 1824          IF (status.ne.pio_noerr) 
THEN 
 1827     &                          trim(label), trim(s(ng)%name), 
lfout(ng)
 
 1834              WRITE (
stdout,30) trim(
vname(2,ifield)), fmin, fmax
 
 1857      CALL wclock_off (ng, model, 81, __line__, myfile)
 
 1860  10  
FORMAT (1x,a,
': WRT_STATE_PIO - ',a,t75,a,                        &
 
 1861     &        /,23x,
'(Grid ',i2.2,
', t = ',a,
', File: ',a,              &
 
 1862     &        
', Index=',i1,
', Rec=',i0,
')',                            &
 
 1863     &        /,23x,
'Called from ''',a,
'''')
 
 1864  20  
FORMAT (/,
' WRT_STATE_PIO - error while writing variable: ',a,    &
 
 1865     &        /,17x,
'into ',a,
' NetCDF file: ',a,                       &
 
 1866     &        /,17x,
'for time record: ',i0)
 
 1867  30  
FORMAT (20x,
'- ',a,/,23x,
'(Min = ',1p,e15.8,                      &
 
 1868     &        
' Max = ',1p,e15.8,
')')