3#if defined ICE_MODEL && defined SOLVE3D
34 PUBLIC :: ice_def_nf90
35# if defined PIO_LIB && defined DISTRIBUTE
39 PUBLIC :: ice_def_station_nf90
40# if defined PIO_LIB && defined DISTRIBUTE
41 PUBLIC :: ice_def_station_pio
44 PUBLIC :: ice_wrt_nf90
45# if defined PIO_LIB && defined DISTRIBUTE
49 PUBLIC :: ice_wrt_station_nf90
50# if defined PIO_LIB && defined DISTRIBUTE
51 PUBLIC :: ice_wrt_station_pio
58 SUBROUTINE ice_def_nf90 (ng, model, ldef, VarOut, S, &
59 & t2dgrd, u2dgrd, v2dgrd)
66 logical,
intent(in) :: ldef, VarOut(NV,Ngrids)
68 integer,
intent(in) :: ng, model
69 integer,
intent(in),
optional :: t2dgrd(:), u2dgrd(:), v2dgrd(:)
71 TYPE(T_IO),
intent(inout) :: S(Ngrids)
75 logical :: got_var(NV)
78 integer,
parameter :: Natt = 25
80 integer :: i, ifield, j, nf, nvd3, status, vtype
87 character (len=120) :: Vinfo(Natt)
88 character (len=256) :: ncname
90 character (len=*),
parameter :: MyFile = &
91 & __FILE__//
", ice_def_nf90"
99 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
104# if defined WRITE_WATER && defined MASKING
125 define :
IF (ldef)
THEN
128 IF (
isice(nf).gt.0)
THEN
130 IF (s(ng)%ncid.eq.rst(ng)%ncid)
THEN
134 ldefvar=varout(ifield,ng)
138 vinfo( 1)=
vname(1,ifield)
139 vinfo( 2)=
vname(2,ifield)
140 vinfo( 3)=
vname(3,ifield)
141 vinfo(14)=
vname(4,ifield)
143 vinfo(21)=
vname(6,ifield)
144 vinfo(22)=
'coordinates'
145 aval(5)=real(
iinfo(1,ifield,ng),r8)
149 icegrd(1:3)=u2dgrd(1:3)
150# if defined WRITE_WATER && defined MASKING
154 icegrd(1:3)=v2dgrd(1:3)
155# if defined WRITE_WATER && defined MASKING
159 icegrd(1:3)=t2dgrd(1:3)
160# if defined WRITE_WATER && defined MASKING
165 status=
def_var(ng, model, s(ng)%ncid, &
166 & s(ng)%Vid(ifield), &
167 & vtype, nvd3, icegrd, aval, vinfo, ncname)
169 & __line__, myfile))
RETURN
176 IF (varout(
iduier,ng))
THEN
182# if defined WRITE_WATER && defined MASKING
186 vinfo(22)=
'coordinates'
188 status=
def_var(ng, model, s(ng)%ncid, &
190 & vtype, nvd3, t2dgrd, aval, vinfo, ncname)
191 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
196 IF (varout(
idvinr,ng))
THEN
202# if defined WRITE_WATER && defined MASKING
206 vinfo(22)=
'coordinates'
208 status=
def_var(ng, model, s(ng)%ncid, &
210 & vtype, nvd3, t2dgrd, aval, vinfo, ncname)
211 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
219 IF (
ifice(nf).gt.0)
THEN
221 IF (varout(ifield,ng))
THEN
222 vinfo( 1)=
vname(1,ifield)
223 vinfo( 2)=
vname(2,ifield)
224 vinfo( 3)=
vname(3,ifield)
225 vinfo(14)=
vname(4,ifield)
227# if defined WRITE_WATER && defined MASKING
230 vinfo(21)=
vname(6,ifield)
231 vinfo(22)=
'coordinates'
232 aval(5)=real(
iinfo(1,ifield,ng),r8)
236 vinfo(11)=
'increase ice thickness'
237 vinfo(12)=
'decrease ice concentration'
246 status=
def_var(ng, model, s(ng)%ncid, &
247 & s(ng)%Vid(ifield), &
248 & vtype, nvd3, t2dgrd, aval, vinfo, ncname)
250 & __line__, myfile))
RETURN
261 query :
IF (.not.ldef)
THEN
274 IF (
isice(nf).gt.0)
THEN
277 got_var(ifield)=.true.
278 s(ng)%Vid(ifield)=
var_id(i)
293 IF (
ifice(nf).gt.0)
THEN
296 got_var(ifield)=.true.
297 s(ng)%Vid(ifield)=
var_id(i)
307 IF (
isice(nf).gt.0)
THEN
309 IF (.not.got_var(ifield).and.varout(ifield,ng))
THEN
310 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
332 IF (
ifice(nf).gt.0)
THEN
334 IF (.not.got_var(ifield).and.varout(ifield,ng))
THEN
335 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
344 10
FORMAT (/,
' ICE_DEF_NF90 - unable to find variable: ',a,2x, &
345 &
' in output NetCDF file: ',a)
347 END SUBROUTINE ice_def_nf90
350 SUBROUTINE ice_wrt_nf90 (ng, model, tile, &
351 & LBi, UBi, LBj, UBj, &
359 logical,
intent(in) :: VarOut(NV,Ngrids)
361 integer,
intent(in) :: ng, model, tile
362 integer,
intent(in) :: LBi, UBi, LBj, UBj
364 TYPE(T_IO),
intent(inout) :: S(Ngrids)
370 integer :: ifield, ifld
371 integer :: gfactor, gtype, status
375 real(r8),
pointer :: iceField(:,:)
376 real(r8),
pointer :: iceMask(:,:)
378 real(r8),
allocatable :: Ur2d(:,:)
379 real(r8),
allocatable :: Vr2d(:,:)
381 character (len=*),
parameter :: MyFile = &
382 & __FILE__//
", ice_wrt_nf90"
390 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
395# if defined WRITE_WATER && defined MASKING
406 IF (
isice(ifld).gt.0)
THEN
408 IF (s(ng)%ncid.eq.rst(ng)%ncid)
THEN
411 lwrtvar=varout(ifield,ng)
415 IF ((model.eq.
inlm).and. &
416 ((s(ng)%ncid.eq.his(ng)%ncid).or. &
417 & (s(ng)%ncid.eq.qck(ng)%ncid).or. &
418 & (s(ng)%ncid.eq.rst(ng)%ncid)))
THEN
419 icefield =>
ice(ng) % Si(lbi:ubi,lbj:ubj,iuout,ifld)
421 ELSE IF (s(ng)%ncid.eq.avg(ng)%ncid)
THEN
422 icefield =>
ice_savg(ifld,ng) % var(lbi:ubi,lbj:ubj)
430 icemask =>
grid(ng) % umask_full
435 icemask =>
grid(ng) % vmask_full
440 icemask =>
grid(ng) % rmask_full
445 status=
nf_fwrite2d(ng, model, s(ng)%ncid, ifield, &
446 & s(ng)%Vid(ifield), &
447 & s(ng)%Rindex, gtype, &
448 & lbi, ubi, lbj, ubj, scale, &
453 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
454 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
469 IF (.not.
allocated(ur2d))
THEN
470 allocate (ur2d(lbi:ubi,lbj:ubj))
471 ur2d(lbi:ubi,lbj:ubj)=0.0_r8
473 IF (.not.
allocated(vr2d))
THEN
474 allocate (vr2d(lbi:ubi,lbj:ubj))
475 vr2d(lbi:ubi,lbj:ubj)=0.0_r8
478 & lbi, ubi, lbj, ubj, &
479 &
grid(ng) % CosAngler, &
480 &
grid(ng) % SinAngler, &
482 &
grid(ng) % rmask_full, &
492 & s(ng)%Rindex, gtype, &
493 & lbi, ubi, lbj, ubj, scale, &
495 &
grid(ng) % rmask_full, &
498 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
500 & s(ng)%Rindex, trim(s(ng)%name)
508 & s(ng)%Rindex, gtype, &
509 & lbi, ubi, lbj, ubj, scale, &
511 &
grid(ng) % rmask_full, &
514 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
516 & s(ng)%Rindex, trim(s(ng)%name)
530 IF (
ifice(ifld).gt.0)
THEN
532 IF (s(ng)%ncid.eq.rst(ng)%ncid)
THEN
535 lwrtvar=varout(ifield,ng)
539 IF ((model.eq.
inlm).and. &
540 ((s(ng)%ncid.eq.his(ng)%ncid).or. &
541 & (s(ng)%ncid.eq.qck(ng)%ncid).or. &
542 & (s(ng)%ncid.eq.rst(ng)%ncid)))
THEN
543 icefield =>
ice(ng) % Fi(lbi:ubi,lbj:ubj,ifld)
545 ELSE IF (s(ng)%ncid.eq.avg(ng)%ncid)
THEN
546 icefield =>
ice_favg(ifld,ng) % var(lbi:ubi,lbj:ubj)
552 status=
nf_fwrite2d(ng, model, s(ng)%ncid, ifield, &
553 & s(ng)%Vid(ifield), &
554 & s(ng)%Rindex, gtype, &
555 & lbi, ubi, lbj, ubj, scale, &
557 &
grid(ng) % rmask_full, &
560 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
561 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
572 10
FORMAT (/,
" ICE_WRT_NF90 - error while writing variable '",a, &
573 &
"', time record = ",i0,/,11x,
'into file: ',a)
576 END SUBROUTINE ice_wrt_nf90
581 SUBROUTINE ice_def_station_nf90 (ng, model, ldef, VarOut, S, &
589 logical,
intent(in) :: ldef, VarOut(NV,Ngrids)
591 integer,
intent(in) :: ng, model
592 integer,
intent(in),
optional :: pgrd(:)
594 TYPE(T_IO),
intent(inout) :: S(Ngrids)
598 logical :: got_var(NV)
600 integer,
parameter :: Natt = 25
602 integer :: i, ifield, j, nf, status
606 character (len=120) :: Vinfo(Natt)
607 character (len=256) :: ncname
609 character (len=*),
parameter :: MyFile = &
610 & __FILE__//
", ice_def_stations_nf90"
618 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
636 define :
IF (ldef)
THEN
639 IF (
isice(nf).gt.0)
THEN
641 IF (varout(ifield,ng))
THEN
642 vinfo( 1)=
vname(1,ifield)
643 vinfo( 2)=
vname(2,ifield)
644 vinfo( 3)=
vname(3,ifield)
645 vinfo(14)=
vname(4,ifield)
648 status=
def_var(ng, model, s(ng)%ncid, &
649 & s(ng)%Vid(ifield), &
650 &
nf_fout, 2, pgrd, aval, vinfo, ncname, &
651 & setfillval = .true., &
652 & setparaccess = .true.)
654 & __line__, myfile))
RETURN
664 IF (
ifice(nf).gt.0)
THEN
666 IF (varout(ifield,ng))
THEN
667 vinfo( 1)=
vname(1,ifield)
668 vinfo( 2)=
vname(2,ifield)
669 vinfo( 3)=
vname(3,ifield)
670 vinfo(14)=
vname(4,ifield)
673 status=
def_var(ng, model, s(ng)%ncid, &
674 & s(ng)%Vid(ifield), &
675 &
nf_fout, 2, pgrd, aval, vinfo, ncname, &
676 & setfillval = .true., &
677 & setparaccess = .true.)
679 & __line__, myfile))
RETURN
690 query :
IF (.not.ldef)
THEN
703 IF (
isice(nf).gt.0)
THEN
706 got_var(ifield)=.true.
707 s(ng)%Vid(ifield)=
var_id(i)
714 IF (
ifice(nf).gt.0)
THEN
717 got_var(ifield)=.true.
718 s(ng)%Vid(ifield)=
var_id(i)
728 IF (
isice(nf).gt.0)
THEN
730 IF (.not.got_var(ifield).and.varout(ifield,ng))
THEN
731 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
740 IF (
ifice(nf).gt.0)
THEN
742 IF (.not.got_var(ifield).and.varout(ifield,ng))
THEN
743 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
752 10
FORMAT (/,
' ICE_DEF_STATION_NF90 - unable to find variable: ', &
753 & a,2x,
' in output NetCDF file: ',a)
755 END SUBROUTINE ice_def_station_nf90
758 SUBROUTINE ice_wrt_station_nf90 (ng, model, tile, &
759 & LBi, UBi, LBj, UBj, &
767 logical,
intent(in) :: VarOut(NV,Ngrids)
769 integer,
intent(in) :: ng, model, tile
770 integer,
intent(in) :: LBi, UBi, LBj, UBj
772 TYPE(T_IO),
intent(inout) :: S(Ngrids)
778 integer :: i, ifield, ifld
782 real(r8),
dimension(Nstation(ng)) :: Xpos, Ypos, psta
784 character (len=*),
parameter :: MyFile = &
785 & __FILE__//
", ice_wrt_station_nf90"
793 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
798# ifdef STATIONS_CGRID
807 xpos(i)=scalars(ng)%SposX(i)
808 ypos(i)=scalars(ng)%SposY(i)
816 IF (
isice(ifld).gt.0)
THEN
818 IF (varout(ifield,ng))
THEN
821 & lbi, ubi, lbj, ubj, &
822 & scale,
ice(ng)%Si(:,:,iuout,ifld), &
826 & trim(
vname(1,ifield)), psta, &
827 & (/1,s(ng)%Rindex/), &
829 & ncid = s(ng)%ncid, &
830 & varid = s(ng)%Vid(ifield))
831 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
841 IF (
ifice(ifld).gt.0)
THEN
843 IF (varout(ifield,ng))
THEN
846 & lbi, ubi, lbj, ubj, &
847 & scale,
ice(ng)%Fi(:,:,ifld), &
851 & trim(
vname(1,ifield)), psta, &
852 & (/1,s(ng)%Rindex/), &
854 & ncid = s(ng)%ncid, &
855 & varid = s(ng)%Vid(ifield))
856 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
861 10
FORMAT (/,
' ICE_WRT_STATION_NF90 - error while writing ', &
862 &
"variable '",a,
"', time record = ",i0,/,11x, &
866 END SUBROUTINE ice_wrt_station_nf90
869# if defined PIO_LIB && defined DISTRIBUTE
872 SUBROUTINE ice_def_pio (ng, model, ldef, VarOut, S, &
873 & t2dgrd, u2dgrd, v2dgrd)
880 logical,
intent(in) :: ldef, VarOut(NV,Ngrids)
882 integer,
intent(in) :: ng, model
883 integer,
intent(in),
optional :: t2dgrd(:), u2dgrd(:), v2dgrd(:)
885 TYPE(T_IO),
intent(inout) :: S(Ngrids)
891 integer,
parameter :: Natt = 25
893 integer :: i, ifield, j, nf, nvd3, status, vtype
899 character (len=120) :: Vinfo(Natt)
900 character (len=256) :: ncname
902 character (len=*),
parameter :: MyFile = &
903 & __FILE__//
", ice_def_pio"
911 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
914 define :
IF (ldef)
THEN
918# if defined WRITE_WATER && defined MASKING
938 IF (
isice(nf).gt.0)
THEN
940 IF (s(ng)%ncid.eq.rst(ng)%ncid)
THEN
944 ldefvar=varout(ifield,ng)
949 vinfo( 1)=
vname(1,ifield)
950 vinfo( 2)=
vname(2,ifield)
951 vinfo( 3)=
vname(3,ifield)
952 vinfo(14)=
vname(4,ifield)
954 vinfo(21)=
vname(6,ifield)
955 vinfo(22)=
'coordinates'
956 aval(5)=real(
iinfo(1,ifield,ng),r8)
961 icegrd(1:3)=u2dgrd(1:3)
962# if defined WRITE_WATER && defined MASKING
965 s(ng)%pioVar(ifield)%gtype=
u2dvar
967 icegrd(1:3)=v2dgrd(1:3)
968# if defined WRITE_WATER && defined MASKING
971 s(ng)%pioVar(ifield)%gtype=
v2dvar
973 icegrd(1:3)=t2dgrd(1:3)
974# if defined WRITE_WATER && defined MASKING
977 s(ng)%pioVar(ifield)%gtype=
r2dvar
980 status=
def_var(ng, model, s(ng)%pioFile, &
981 & s(ng)%pioVar(
iduice)%vd, &
982 & vtype, nvd3, icegrd, &
983 & aval, vinfo, ncname)
985 & __line__, myfile))
RETURN
992 IF (varout(
iduier,ng))
THEN
998# if defined WRITE_WATER && defined MASKING
1002 vinfo(22)=
'coordinates'
1007 status=
def_var(ng, model, s(ng)%pioFile, &
1008 & s(ng)%pioVar(
iduier)%vd, &
1009 & vtype, nvd3, t2dgrd, aval, vinfo, ncname)
1010 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
1015 IF (varout(
idvinr,ng))
THEN
1021# if defined WRITE_WATER && defined MASKING
1022 vinfo(20)=
'mask_rho'
1025 vinfo(22)=
'coordinates'
1030 status=
def_var(ng, model, s(ng)%pioFile, &
1031 & s(ng)%pioVar(
idvinr)%vd, &
1032 & vtype, nvd3, t2dgrd, aval, vinfo, ncname)
1033 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
1041 IF (
ifice(nf).gt.0)
THEN
1043 IF (varout(ifield,ng))
THEN
1044 vinfo( 1)=
vname(1,ifield)
1045 vinfo( 2)=
vname(2,ifield)
1046 vinfo( 3)=
vname(3,ifield)
1047 vinfo(14)=
vname(4,ifield)
1049# if defined WRITE_WATER && defined MASKING
1050 vinfo(20)=
'mask_rho'
1052 vinfo(21)=
vname(6,ifield)
1053 vinfo(22)=
'coordinates'
1054 aval(5)=real(
iinfo(1,ifield,ng),r8)
1055 s(ng)%pioVar(ifield)%dkind=
pio_fout
1056 s(ng)%pioVar(ifield)%gtype=
r2dvar
1060 vinfo(11)=
'increase ice thickness'
1061 vinfo(12)=
'decrease ice concentration'
1063 vinfo(11)=
'freezing'
1067 vinfo(12)=
'freezing'
1070 status=
def_var(ng, model, s(ng)%pioFile, &
1071 & s(ng)%pioVar(
idaice)%vd, &
1072 & vtype, nvd3, t2dgrd, &
1073 & aval, vinfo, ncname)
1075 & __line__, myfile))
RETURN
1086 query :
IF (.not.ldef)
THEN
1097 IF (s(ng)%ncid.eq.rst(ng)%ncid)
THEN
1105 IF (
isice(nf).gt.0)
THEN
1107 IF (trim(var_name(i)).eq.trim(
vname(1,ifield)))
THEN
1108 got_var(ifield)=.true.
1109 s(ng)%pioVar(ifield)%vd=
var_desc(i)
1110 s(ng)%pioVar(ifield)%dkind=vtype
1114 s(ng)%pioVar(ifield)%gtype=
u2dvar
1116 s(ng)%pioVar(ifield)%gtype=
v2dvar
1118 s(ng)%pioVar(ifield)%gtype=
r2dvar
1126 IF (trim(var_name(i)).eq.trim(
vname(1,
iduier)))
THEN
1131 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvinr)))
THEN
1134 s(ng)%pioVar(
idvinr)%dkind=vtype
1139 IF (
ifice(nf).gt.0)
THEN
1141 IF (trim(var_name(i)).eq.trim(
vname(1,ifield)))
THEN
1142 got_var(ifield)=.true.
1143 s(ng)%pioVar(ifield)%vd=
var_desc(i)
1144 s(ng)%pioVar(ifield)%dkind=vtype
1145 s(ng)%pioVar(ifield)%gtype=
r2dvar
1155 IF (
isice(nf).gt.0)
THEN
1157 IF (.not.got_var(ifield).and.varout(ifield,ng))
THEN
1158 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
1180 IF (
ifice(nf).gt.0)
THEN
1182 IF (.not.got_var(ifield).and.varout(ifield,ng))
THEN
1183 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
1192 10
FORMAT (/,
' ICE_DEF_PIO - unable to find variable: ',a,2x, &
1193 &
' in output NetCDF file: ',a)
1196 END SUBROUTINE ice_def_pio
1199 SUBROUTINE ice_wrt_pio (ng, model, tile, &
1200 & LBi, UBi, LBj, UBj, &
1208 logical,
intent(in) :: VarOut(NV,Ngrids)
1210 integer,
intent(in) :: ng, model, tile
1211 integer,
intent(in) :: LBi, UBi, LBj, UBj
1213 TYPE(T_IO),
intent(inout) :: S(Ngrids)
1219 integer :: ifield, ifld
1220 integer :: gfactor, gtype, status
1224 real(r8),
pointer :: iceField(:,:)
1225 real(r8),
pointer :: iceMask(:,:)
1227 real(r8),
allocatable :: Ur2d(:,:)
1228 real(r8),
allocatable :: Vr2d(:,:)
1230 character (len=*),
parameter :: MyFile = &
1231 & __FILE__//
", ice_wrt_pio"
1233 TYPE (IO_desc_t),
pointer :: ioDesc
1241 IF (
founderror(exit_flag, noerror, __line__, myfile))
RETURN
1246# if defined WRITE_WATER && defined MASKING
1257 IF (
isice(ifld).gt.0)
THEN
1259 IF (s(ng)%ncid.eq.rst(ng)%ncid)
THEN
1262 lwrtvar=varout(ifield,ng)
1266 IF ((model.eq.
inlm).and. &
1267 ((s(ng)%ncid.eq.his(ng)%ncid).or. &
1268 & (s(ng)%ncid.eq.qck(ng)%ncid).or. &
1269 & (s(ng)%ncid.eq.rst(ng)%ncid)))
THEN
1270 icefield =>
ice(ng) % Si(lbi:ubi,lbj:ubj,iuout,ifld)
1272 ELSE IF (s(ng)%ncid.eq.avg(ng)%ncid)
THEN
1273 icefield =>
ice_savg(ifld,ng) % var(lbi:ubi,lbj:ubj)
1279 IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double)
THEN
1285 icemask =>
grid(ng) % umask_full
1288 IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double)
THEN
1294 icemask =>
grid(ng) % vmask_full
1297 IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double)
THEN
1303 icemask =>
grid(ng) % rmask_full
1308 status=
nf_fwrite2d(ng, model, s(ng)%pioFile, ifield, &
1309 & s(ng)%pioVar(ifield), s(ng)%Rindex, &
1311 & lbi, ubi, lbj, ubj, scale, &
1316 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1317 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
1332 IF (.not.
allocated(ur2d))
THEN
1333 allocate (ur2d(lbi:ubi,lbj:ubj))
1334 ur2d(lbi:ubi,lbj:ubj)=0.0_r8
1336 IF (.not.
allocated(vr2d))
THEN
1337 allocate (vr2d(lbi:ubi,lbj:ubj))
1338 vr2d(lbi:ubi,lbj:ubj)=0.0_r8
1341 & lbi, ubi, lbj, ubj, &
1342 &
grid(ng) % CosAngler, &
1343 &
grid(ng) % SinAngler, &
1345 &
grid(ng) % rmask_full, &
1352 IF (s(ng)%pioVar(
iduier)%dkind.eq.pio_double)
THEN
1358 & s(ng)%pioVAR(
iduier), s(ng)%Rindex, &
1360 & lbi, ubi, lbj, ubj, scale, &
1362 &
grid(ng) % rmask_full, &
1365 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1367 & s(ng)%Rindex, trim(s(ng)%name)
1373 IF (s(ng)%pioVar(
idvinr)%dkind.eq.pio_double)
THEN
1379 & s(ng)%pioVar(
idvinr), s(ng)%Rindex, &
1381 & lbi, ubi, lbj, ubj, scale, &
1383 &
grid(ng) % rmask_full, &
1386 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1388 & s(ng)%Rindex, trim(s(ng)%name)
1402 IF (
ifice(ifld).gt.0)
THEN
1404 IF (s(ng)%ncid.eq.rst(ng)%ncid)
THEN
1407 lwrtvar=varout(ifield,ng)
1411 IF ((model.eq.
inlm).and. &
1412 ((s(ng)%ncid.eq.his(ng)%ncid).or. &
1413 & (s(ng)%ncid.eq.qck(ng)%ncid).or. &
1414 & (s(ng)%ncid.eq.rst(ng)%ncid)))
THEN
1415 icefield =>
ice(ng) % Fi(lbi:ubi,lbj:ubj,ifld)
1417 ELSE IF (s(ng)%ncid.eq.avg(ng)%ncid)
THEN
1418 icefield =>
ice_favg(ifld,ng) % var(lbi:ubi,lbj:ubj)
1423 IF (s(ng)%pioVar(ifield)%dkind.eq.pio_double)
THEN
1428 status=
nf_fwrite2d(ng, model, s(ng)%pioFile, ifield, &
1429 & s(ng)%pioVar(ifield), s(ng)%Rindex, &
1431 & lbi, ubi, lbj, ubj, scale, &
1433 &
grid(ng) % rmask_full, &
1436 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1437 IF (
master)
WRITE (stdout,10) trim(
vname(1,ifield)), &
1448 10
FORMAT (/,
" ICE_WRT - error while writing variable '",a, &
1449 &
"', time record = ",i0,/,11x,
'into file: ',a)
1452 END SUBROUTINE ice_wrt_pio
type(t_grid), dimension(:), allocatable grid
integer, parameter isvice
integer, parameter icwdiv
integer, dimension(nicef) ifice
integer, parameter icw_ao
type(t_ice), dimension(:), allocatable ice
integer, dimension(nices) isice
integer, parameter isuice
type(t_ice_avg), dimension(:,:), allocatable ice_savg
type(t_ice_avg), dimension(:,:), allocatable ice_favg
integer, parameter icw_io
integer, parameter icw_ai
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:,:,:), allocatable iinfo
integer, parameter nf_fout
character(len=100), dimension(mvars) var_name
integer, dimension(mvars) var_id
integer, parameter nf_frst
integer, dimension(:), allocatable nstation
integer, parameter u2dvar
integer, parameter r2dvar
integer, parameter v2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dvar
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dvar
integer, parameter pio_frst
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dvar
logical function, public founderror(flag, noerr, line, routine)
subroutine, public uv_rotate2d(ng, tile, add, lboundary, lbi, ubi, lbj, ubj, cosangler, sinangler, rmask_full, uinp, vinp, uout, vout)