99 & Vtype, nVdim, Vdim, &
100 & Aval, Vinfo, ncname, &
101 & SetFillVal, SetParAccess)
RESULT (status)
106#if !defined PARALLEL_IO && defined DISTRIBUTE
113 logical,
intent(in),
optional :: setfillval
114 logical,
intent(in),
optional :: setparaccess
116 integer,
intent (in) :: ng, model, ncid, vtype, nvdim
118 integer,
dimension(:),
intent (in) :: vdim
120 integer,
intent (out) :: vid
122 real(r8),
dimension(:),
intent(inout) :: aval
124 character (len=*),
intent(in) :: ncname
125 character (len=*),
intent(inout) :: vinfo(25)
132#if defined PARALLEL_IO && defined DISTRIBUTE
136 integer :: i, j, latt
139 character (len= 5) location
140 character (len=160) text
142 character (len=*),
parameter :: myfile = &
143 & __FILE__//
", def_var_nf90"
156 IF (len_trim(vinfo(1)).gt.0)
THEN
157 IF ((nvdim.eq.1).and.(vdim(1).eq.0))
THEN
158 status=nf90_def_var(ncid, trim(vinfo(1)), vtype, &
161 status=nf90_def_var(ncid, trim(vinfo(1)), vtype, &
162 & vdim(1:nvdim), vid)
164 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
173#if !defined PARALLEL_IO && (defined HDF5 && defined DEFLATE)
182 IF (len_trim(vinfo(1)).gt.0)
THEN
183 IF ((nvdim.gt.1).and.(vdim(1).ne.0))
THEN
186 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
200 IF (trim(vinfo(1)).eq.
'grid')
THEN
201 status=nf90_put_att(ncid, vid,
'cf_role', &
203 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
211 status=nf90_put_att(ncid, vid,
'topology_dimension', &
213 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
221 status=nf90_put_att(ncid, vid,
'node_dimensions', &
223 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
231 text=
'xi_rho: xi_psi (padding: both) '// &
232 &
'eta_rho: eta_psi (padding: both)'
233 status=nf90_put_att(ncid, vid,
'face_dimensions', &
235 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
243 text=
'xi_u: xi_psi eta_u: eta_psi (padding: both)'
244 status=nf90_put_att(ncid, vid,
'edge1_dimensions', &
246 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
254 text=
'xi_v: xi_psi (padding: both) eta_v: eta_psi'
255 status=nf90_put_att(ncid, vid,
'edge2_dimensions', &
257 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
266 status=nf90_put_att(ncid, vid,
'node_coordinates', &
268 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
276 status=nf90_put_att(ncid, vid,
'face_coordinates', &
278 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
286 status=nf90_put_att(ncid, vid,
'edge1_coordinates', &
288 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
296 status=nf90_put_att(ncid, vid,
'edge2_coordinates', &
298 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
306 status=nf90_put_att(ncid, vid,
'node_coordinates', &
308 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
316 status=nf90_put_att(ncid, vid,
'face_coordinates', &
318 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
326 status=nf90_put_att(ncid, vid,
'edge1_coordinates', &
328 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
336 status=nf90_put_att(ncid, vid,
'edge2_coordinates', &
338 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
348 status=nf90_put_att(ncid, vid,
'vertical_dimensions', &
349 &
's_rho: s_w (padding: none)')
350 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
364 latt=len_trim(vinfo(21))
365 IF (latt.gt.0.and.(vinfo(21)(1:6).ne.
'nulval'))
THEN
366 status=nf90_put_att(ncid, vid,
'standard_name', &
368 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
381 IF (len_trim(vinfo(2)).gt.0)
THEN
382 vinfo(2)=trim(adjustl(vinfo(2)))
383 latt=len_trim(vinfo(2))
384 status=nf90_put_att(ncid, vid,
'long_name', &
386 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
399 latt=len_trim(vinfo(19))
401 status=nf90_put_att(ncid, vid,
'size_class', &
403 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
416 latt=len_trim(vinfo(3))
418 IF (trim(vinfo(3)).ne.
'nondimensional')
THEN
419 status=nf90_put_att(ncid, vid,
'units', &
421 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
435 latt=len_trim(vinfo(4))
437 status=nf90_put_att(ncid, vid,
'calendar', &
439 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
452 latt=len_trim(vinfo(5))
454 IF (vtype.eq.nf90_int)
THEN
455 status=nf90_put_att(ncid, vid, trim(vinfo(5)), &
457#ifndef NO_4BYTE_REALS
458 ELSE IF (vtype.eq.nf90_float)
THEN
459 status=nf90_put_att(ncid, vid, trim(vinfo(5)), &
463 status=nf90_put_att(ncid, vid, trim(vinfo(5)), &
466 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
480 latt=len_trim(vinfo(6))
482 IF (vtype.eq.nf90_int)
THEN
483 status=nf90_put_att(ncid, vid, trim(vinfo(6)), &
485#ifndef NO_4BYTE_REALS
486 ELSE IF (vtype.eq.nf90_float)
THEN
487 status=nf90_put_att(ncid, vid, trim(vinfo(6)), &
491 status=nf90_put_att(ncid, vid, trim(vinfo(6)), &
494 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
509 IF ((len_trim(vinfo(7)).gt.0).and. &
510 & (len_trim(vinfo(8)).gt.0))
THEN
513 status=nf90_put_att(ncid, vid,
'flag_values', &
515 IF (status.eq.nf90_noerr)
THEN
516 text=trim(vinfo(7))//
' '//trim(vinfo(8))
518 status=nf90_put_att(ncid, vid,
'flag_meanings', &
520 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
541 IF ((len_trim(vinfo( 9)).gt.0).and. &
542 & (len_trim(vinfo(10)).gt.0))
THEN
543 IF (vtype.eq.nf90_int)
THEN
544 status=nf90_put_att(ncid, vid,
'flag_values', &
546#ifndef NO_4BYTE_REALS
547 ELSE IF (vtype.eq.nf90_float)
THEN
548 status=nf90_put_att(ncid, vid,
'flag_values', &
549 & (/0.0_r4, 1.0_r4/))
552 status=nf90_put_att(ncid, vid,
'flag_values', &
553 & (/0.0_r8, 1.0_r8/))
555 IF (status.eq.nf90_noerr)
THEN
556 text=trim(vinfo(9))//
' '//trim(vinfo(10))
558 status=nf90_put_att(ncid, vid,
'flag_meanings', &
560 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
580 latt=len_trim(vinfo(11))
582 status=nf90_put_att(ncid, vid,
'negative_value', &
584 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
597 latt=len_trim(vinfo(12))
599 status=nf90_put_att(ncid, vid,
'positive_value', &
601 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
614 latt=len_trim(vinfo(25))
616 status=nf90_put_att(ncid, vid,
'positive', &
618 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
631 latt=len_trim(vinfo(13))
633 status=nf90_put_att(ncid, vid,
'cycle', &
635 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
648 latt=len_trim(vinfo(15))
650 status=nf90_put_att(ncid, vid,
'positions', &
652 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
665 latt=len_trim(vinfo(16))
667 status=nf90_put_att(ncid, vid,
'time', &
669 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
682 IF (((abs(int(aval(5))).le.4).and.(nvdim.gt.2)).or. &
683 & ((abs(int(aval(5))).gt.4).and.(nvdim.gt.3)))
THEN
684 IF ((ncid.eq.
avg(ng)%ncid).or. &
685 & (ncid.eq.
dia(ng)%ncid))
THEN
686 text=
'ocean_time: mean'
688 text=
'ocean_time: point'
691 status=nf90_put_att(ncid, vid,
'cell_methods', &
693 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
706 latt=len_trim(vinfo(17))
708 IF (vtype.eq.nf90_int)
THEN
709 status=nf90_put_att(ncid, vid, trim(vinfo(17)), &
711#ifndef NO_4BYTE_REALS
712 ELSE IF (vtype.eq.nf90_float)
THEN
713 status=nf90_put_att(ncid, vid, trim(vinfo(17)), &
717 status=nf90_put_att(ncid, vid, trim(vinfo(17)), &
720 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
734 latt=len_trim(vinfo(18))
736 IF (vtype.eq.nf90_int)
THEN
737 status=nf90_put_att(ncid, vid, trim(vinfo(18)), &
739#ifndef NO_4BYTE_REALS
740 ELSE IF (vtype.eq.nf90_float)
THEN
741 status=nf90_put_att(ncid, vid, trim(vinfo(18)), &
745 status=nf90_put_att(ncid, vid, trim(vinfo(18)), &
748 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
762 latt=len_trim(vinfo(24))
764 IF (vtype.eq.nf90_int)
THEN
765 status=nf90_put_att(ncid, vid, trim(vinfo(24)), &
767#ifndef NO_4BYTE_REALS
768 ELSE IF (vtype.eq.nf90_float)
THEN
769 status=nf90_put_att(ncid, vid, trim(vinfo(24)), &
773 status=nf90_put_att(ncid, vid, trim(vinfo(24)), &
776 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
790 latt=len_trim(vinfo(20))
792 status=nf90_put_att(ncid, vid,
'water_points', &
794 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
807 latt=len_trim(vinfo(22))
810 IF (int(aval(5)).eq.
r2dvar)
THEN
811 text=
'lon_rho lat_rho'
813 ELSE IF (int(aval(5)).eq.
r3dvar)
THEN
814 text=
'lon_rho lat_rho s_rho'
816 ELSE IF (int(aval(5)).eq.
w3dvar)
THEN
817 text=
'lon_rho lat_rho s_w'
819 ELSE IF (int(aval(5)).eq.
b3dvar)
THEN
820 text=
'lon_rho lat_rho'
822 ELSE IF (int(aval(5)).eq.
u2dvar)
THEN
825 ELSE IF (int(aval(5)).eq.
u3dvar)
THEN
826 text=
'lon_u lat_u s_rho'
828 ELSE IF (int(aval(5)).eq.-
u3dvar)
THEN
829 text=
'lon_u lat_u s_w'
831 ELSE IF (int(aval(5)).eq.
v2dvar)
THEN
834 ELSE IF (int(aval(5)).eq.
v3dvar)
THEN
835 text=
'lon_v lat_v s_rho'
837 ELSE IF (int(aval(5)).eq.-
v3dvar)
THEN
838 text=
'lon_v lat_v s_w'
840 ELSE IF (int(aval(5)).eq.
p2dvar)
THEN
841 text=
'lon_psi lat_psi'
843 ELSE IF (int(aval(5)).eq.
p3dvar)
THEN
844 text=
'lon_psi lat_psi s_rho'
846 ELSE IF (int(aval(5)).eq.
l3dvar)
THEN
847 text=
'lon_rho lat_rho light'
849 ELSE IF (int(aval(5)).eq.
l4dvar)
THEN
850 text=
'lon_rho lat_rho s_rho light'
854 IF (int(aval(5)).eq.
r2dvar)
THEN
857 ELSE IF (int(aval(5)).eq.
r3dvar)
THEN
858 text=
'x_rho y_rho s_rho'
860 ELSE IF (int(aval(5)).eq.
w3dvar)
THEN
861 text=
'x_rho y_rho s_w'
863 ELSE IF (int(aval(5)).eq.
b3dvar)
THEN
866 ELSE IF (int(aval(5)).eq.
u2dvar)
THEN
869 ELSE IF (int(aval(5)).eq.
u3dvar)
THEN
872 ELSE IF (int(aval(5)).eq.-
u3dvar)
THEN
875 ELSE IF (int(aval(5)).eq.
v2dvar)
THEN
878 ELSE IF (int(aval(5)).eq.
v3dvar)
THEN
881 ELSE IF (int(aval(5)).eq.-
v3dvar)
THEN
884 ELSE IF (int(aval(5)).eq.
p2dvar)
THEN
887 ELSE IF (int(aval(5)).eq.
p3dvar)
THEN
888 text=
'x_psi y_psi s_rho'
890 ELSE IF (int(aval(5)).eq.
l3dvar)
THEN
891 text=
'x_rho y_rho Nbands'
893 ELSE IF (int(aval(5)).eq.
l4dvar)
THEN
894 text=
'x_rho y_rho s_rho Nbands'
899 status=nf90_put_att(ncid, vid,
'grid', &
901 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
909 status=nf90_put_att(ncid, vid,
'location', &
911 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
920 IF (((abs(int(aval(5))).le.4).and.(nvdim.gt.2)).or. &
921 & ((abs(int(aval(5))).gt.4).and.(nvdim.gt.3)))
THEN
922 text=text(1:latt)//
' ocean_time'
925 status=nf90_put_att(ncid, vid, trim(vinfo(22)), &
927 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
941 latt=len_trim(vinfo(23))
943 status=nf90_put_att(ncid, vid,
'formula_terms', &
945 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
958 latt=len_trim(vinfo(14))
960 status=nf90_put_att(ncid, vid,
'field', &
962 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
972#if defined MASKING && !defined WRITE_WATER
980 latt=len_trim(vinfo(22))
981 IF (
PRESENT(setfillval))
THEN
984 landfill=(latt.gt.0).and.(nvdim.gt.2)
987 IF (vtype.eq.nf90_double)
THEN
988 status=nf90_put_att(ncid, vid,
'_FillValue', &
990# ifndef NO_4BYTE_REALS
991 ELSE IF (vtype.eq.nf90_float)
THEN
992 status=nf90_put_att(ncid, vid,
'_FillValue', &
996 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1006#if defined PARALLEL_IO && defined DISTRIBUTE
1014 IF (
PRESENT(setparaccess))
THEN
1024 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1037 DO j=1,len(vinfo(1))
1042#if !defined PARALLEL_IO && defined DISTRIBUTE
1049 10
FORMAT (/,
' DEF_VAR_NF90 - Grid ',i2.2, &
1050 &
', unable to define variable: ',a,/, &
1051 & 16x,
'in NetCDF file: ',a)
1052 20
FORMAT (/,
' DEF_VAR_NF90 - error while setting deflate', &
1053 &
' parameters for variable: ',a,/,16x,
'in NetCDF file: ',a)
1054 30
FORMAT (/,
'DEF_VAR_NF90 - error while defining attribute: ',a, &
1055 &
' for variable: ',a,/,16x,
'in NetCDF file: ',a)
1056#if defined PARALLEL_IO && defined DISTRIBUTE
1057 40
FORMAT (/,
'DEF_VAR - error while setting parallel access flag', &
1058 &
' for variable: ',a,/,16x,
'in NetCDF file: ',a)
1068 & Vtype, nVdim, Vdim, &
1069 & Aval, Vinfo, ncname, &
1070 & SetFillVal, SetParAccess)
RESULT (status)
1079 logical,
intent(in),
optional :: setfillval
1080 logical,
intent(in),
optional :: setparaccess
1082 integer,
intent(in) :: ng, model, vtype, nvdim
1084 integer,
dimension(:),
intent (in) :: vdim
1086 real(r8),
dimension(:),
intent(inout) :: aval
1088 character (len=*),
intent(in) :: ncname
1089 character (len=*),
intent(inout) :: vinfo(25)
1091 TYPE (file_desc_t) :: piofile
1092 TYPE (var_desc_t),
intent(out) :: piovar
1100 integer :: i, j, latt
1103 character (len= 5) location
1104 character (len=160) text
1106 character (len=*),
parameter :: myfile = &
1107 & __FILE__//
", def_var_pio"
1117 fileh=abs(piofile%fh)
1122 IF (len_trim(vinfo(1)).gt.0)
THEN
1123 IF ((nvdim.eq.1).and.(vdim(1).eq.0))
THEN
1124 status=pio_def_var(piofile, &
1125 & name = trim(vinfo(1)), &
1129 status=pio_def_var(piofile, &
1130 & name = trim(vinfo(1)), &
1132 & dimids = vdim(1:nvdim), &
1135 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1147 IF (trim(vinfo(1)).eq.
'grid')
THEN
1148 status=pio_put_att(piofile, piovar,
'cf_role', &
1150 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1158 status=pio_put_att(piofile, piovar,
'topology_dimension', &
1160 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1168 status=pio_put_att(piofile, piovar,
'node_dimensions', &
1170 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1178 text=
'xi_rho: xi_psi (padding: both) '// &
1179 &
'eta_rho: eta_psi (padding: both)'
1180 status=pio_put_att(piofile, piovar,
'face_dimensions', &
1182 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1190 text=
'xi_u: xi_psi eta_u: eta_psi (padding: both)'
1191 status=pio_put_att(piofile, piovar,
'edge1_dimensions', &
1193 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1201 text=
'xi_v: xi_psi (padding: both) eta_v: eta_psi'
1202 status=pio_put_att(piofile, piovar,
'edge2_dimensions', &
1204 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1213 status=pio_put_att(piofile, piovar,
'node_coordinates', &
1214 &
'lon_psi lat_psi')
1215 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1223 status=pio_put_att(piofile, piovar,
'face_coordinates', &
1224 &
'lon_rho lat_rho')
1225 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1233 status=pio_put_att(piofile, piovar,
'edge1_coordinates', &
1235 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1243 status=pio_put_att(piofile, piovar,
'edge2_coordinates', &
1245 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1253 status=pio_put_att(piofile, piovar,
'node_coordinates', &
1255 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1263 status=pio_put_att(piofile, piovar,
'face_coordinates', &
1265 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1273 status=pio_put_att(piofile, piovar,
'edge1_coordinates', &
1275 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1283 status=pio_put_att(piofile, piovar,
'edge2_coordinates', &
1285 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1295 status=pio_put_att(piofile, piovar,
'vertical_dimensions', &
1296 &
's_rho: s_w (padding: none)')
1297 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1311 IF (len_trim(vinfo(2)).gt.0)
THEN
1312 vinfo(2)=trim(adjustl(vinfo(2)))
1313 latt=len_trim(vinfo(2))
1314 status=pio_put_att(piofile, piovar,
'long_name', &
1316 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1329 latt=len_trim(vinfo(19))
1331 status=pio_put_att(piofile, piovar,
'size_class', &
1332 & vinfo(19)(1:latt))
1333 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1346 latt=len_trim(vinfo(3))
1348 IF (trim(vinfo(3)).ne.
'nondimensional')
THEN
1349 status=pio_put_att(piofile, piovar,
'units', &
1351 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1365 latt=len_trim(vinfo(4))
1367 status=pio_put_att(piofile, piovar,
'calendar', &
1369 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1382 latt=len_trim(vinfo(5))
1384 IF (vtype.eq.pio_int)
THEN
1385 status=pio_put_att(piofile, piovar, trim(vinfo(5)), &
1387#ifndef NO_4BYTE_REALS
1388 ELSE IF (vtype.eq.pio_real)
THEN
1389 status=pio_put_att(piofile, piovar, trim(vinfo(5)), &
1393 status=pio_put_att(piofile, piovar, trim(vinfo(5)), &
1396 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1410 latt=len_trim(vinfo(6))
1412 IF (vtype.eq.pio_int)
THEN
1413 status=pio_put_att(piofile, piovar, trim(vinfo(6)), &
1415#ifndef NO_4BYTE_REALS
1416 ELSE IF (vtype.eq.pio_real)
THEN
1417 status=pio_put_att(piofile, piovar, trim(vinfo(6)), &
1421 status=pio_put_att(piofile, piovar, trim(vinfo(6)), &
1424 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1439 IF ((len_trim(vinfo(7)).gt.0).and. &
1440 & (len_trim(vinfo(8)).gt.0))
THEN
1443 status=pio_put_att(piofile, piovar,
'flag_values', &
1445 IF (status.eq.pio_noerr)
THEN
1446 text=trim(vinfo(7))//
' '//trim(vinfo(8))
1448 status=pio_put_att(piofile, piovar,
'flag_meanings', &
1450 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1471 IF ((len_trim(vinfo( 9)).gt.0).and. &
1472 & (len_trim(vinfo(10)).gt.0))
THEN
1473 IF (vtype.eq.pio_int)
THEN
1474 status=pio_put_att(piofile, piovar,
'flag_values', &
1476#ifndef NO_4BYTE_REALS
1477 ELSE IF (vtype.eq.pio_real)
THEN
1478 status=pio_put_att(piofile, piovar,
'flag_values', &
1479 & (/0.0_r4, 1.0_r4/))
1482 status=pio_put_att(piofile, piovar,
'flag_values', &
1483 & (/0.0_r8, 1.0_r8/))
1485 IF (status.eq.pio_noerr)
THEN
1486 text=trim(vinfo(9))//
' '//trim(vinfo(10))
1488 status=pio_put_att(piofile, piovar,
'flag_meanings', &
1490 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1510 latt=len_trim(vinfo(11))
1512 status=pio_put_att(piofile, piovar,
'negative_value', &
1513 & vinfo(11)(1:latt))
1514 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1527 latt=len_trim(vinfo(12))
1529 status=pio_put_att(piofile, piovar,
'positive_value', &
1530 & vinfo(12)(1:latt))
1531 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1544 latt=len_trim(vinfo(25))
1546 status=pio_put_att(piofile, piovar,
'positive', &
1547 & vinfo(25)(1:latt))
1548 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1561 latt=len_trim(vinfo(13))
1563 status=pio_put_att(piofile, piovar,
'cycle', &
1564 & vinfo(13)(1:latt))
1565 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1578 latt=len_trim(vinfo(15))
1580 status=pio_put_att(piofile, piovar,
'positions', &
1581 & vinfo(15)(1:latt))
1582 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1595 latt=len_trim(vinfo(16))
1597 status=pio_put_att(piofile, piovar,
'time', &
1598 & vinfo(16)(1:latt))
1599 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1612 IF (((abs(int(aval(5))).le.4).and.(nvdim.gt.2)).or. &
1613 & ((abs(int(aval(5))).gt.4).and.(nvdim.gt.3)))
THEN
1614 IF ((fileh.eq.abs(
avg(ng)%pioFile%fh)).or. &
1615 & (fileh.eq.abs(
dia(ng)%pioFile%fh)))
THEN
1616 text=
'ocean_time: mean'
1618 text=
'ocean_time: point'
1621 status=pio_put_att(piofile, piovar,
'cell_methods', &
1623 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1636 latt=len_trim(vinfo(17))
1638 IF (vtype.eq.pio_int)
THEN
1639 status=pio_put_att(piofile, piovar, trim(vinfo(17)), &
1641#ifndef NO_4BYTE_REALS
1642 ELSE IF (vtype.eq.pio_real)
THEN
1643 status=pio_put_att(piofile, piovar, trim(vinfo(17)), &
1647 status=pio_put_att(piofile, piovar, trim(vinfo(17)), &
1650 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1664 latt=len_trim(vinfo(18))
1666 IF (vtype.eq.pio_int)
THEN
1667 status=pio_put_att(piofile, piovar, trim(vinfo(18)), &
1669#ifndef NO_4BYTE_REALS
1670 ELSE IF (vtype.eq.pio_real)
THEN
1671 status=pio_put_att(piofile, piovar, trim(vinfo(18)), &
1675 status=pio_put_att(piofile, piovar, trim(vinfo(18)), &
1678 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1692 latt=len_trim(vinfo(24))
1694 IF (vtype.eq.pio_int)
THEN
1695 status=pio_put_att(piofile, piovar, trim(vinfo(24)), &
1697#ifndef NO_4BYTE_REALS
1698 ELSE IF (vtype.eq.pio_real)
THEN
1699 status=pio_put_att(piofile, piovar, trim(vinfo(24)), &
1703 status=pio_put_att(piofile, piovar, trim(vinfo(24)), &
1706 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1720 latt=len_trim(vinfo(20))
1722 status=pio_put_att(piofile, piovar,
'water_points', &
1723 & vinfo(20)(1:latt))
1724 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1737 latt=len_trim(vinfo(21))
1739 status=pio_put_att(piofile, piovar,
'standard_name', &
1740 & vinfo(21)(1:latt))
1741 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1754 latt=len_trim(vinfo(22))
1757 IF (int(aval(5)).eq.
r2dvar)
THEN
1758 text=
'lon_rho lat_rho'
1760 ELSE IF (int(aval(5)).eq.
r3dvar)
THEN
1761 text=
'lon_rho lat_rho s_rho'
1763 ELSE IF (int(aval(5)).eq.
w3dvar)
THEN
1764 text=
'lon_rho lat_rho s_w'
1766 ELSE IF (int(aval(5)).eq.
b3dvar)
THEN
1767 text=
'lon_rho lat_rho'
1769 ELSE IF (int(aval(5)).eq.
u2dvar)
THEN
1772 ELSE IF (int(aval(5)).eq.
u3dvar)
THEN
1773 text=
'lon_u lat_u s_rho'
1775 ELSE IF (int(aval(5)).eq.-
u3dvar)
THEN
1776 text=
'lon_u lat_u s_w'
1778 ELSE IF (int(aval(5)).eq.
v2dvar)
THEN
1781 ELSE IF (int(aval(5)).eq.
v3dvar)
THEN
1782 text=
'lon_v lat_v s_rho'
1784 ELSE IF (int(aval(5)).eq.-
v3dvar)
THEN
1785 text=
'lon_v lat_v s_w'
1787 ELSE IF (int(aval(5)).eq.
p2dvar)
THEN
1788 text=
'lon_psi lat_psi'
1790 ELSE IF (int(aval(5)).eq.
p3dvar)
THEN
1791 text=
'lon_psi lat_psi s_rho'
1793 ELSE IF (int(aval(5)).eq.
l3dvar)
THEN
1794 text=
'lon_rho lat_rho light'
1796 ELSE IF (int(aval(5)).eq.
l4dvar)
THEN
1797 text=
'lon_rho lat_rho s_rho light'
1801 IF (int(aval(5)).eq.
r2dvar)
THEN
1804 ELSE IF (int(aval(5)).eq.
r3dvar)
THEN
1805 text=
'x_rho y_rho s_rho'
1807 ELSE IF (int(aval(5)).eq.
w3dvar)
THEN
1808 text=
'x_rho y_rho s_w'
1810 ELSE IF (int(aval(5)).eq.
b3dvar)
THEN
1813 ELSE IF (int(aval(5)).eq.
u2dvar)
THEN
1816 ELSE IF (int(aval(5)).eq.
u3dvar)
THEN
1817 text=
'x_u y_u s_rho'
1819 ELSE IF (int(aval(5)).eq.-
u3dvar)
THEN
1822 ELSE IF (int(aval(5)).eq.
v2dvar)
THEN
1825 ELSE IF (int(aval(5)).eq.
v3dvar)
THEN
1826 text=
'x_v y_v s_rho'
1828 ELSE IF (int(aval(5)).eq.-
v3dvar)
THEN
1831 ELSE IF (int(aval(5)).eq.
p2dvar)
THEN
1834 ELSE IF (int(aval(5)).eq.
p3dvar)
THEN
1835 text=
'x_psi y_psi s_rho'
1837 ELSE IF (int(aval(5)).eq.
l3dvar)
THEN
1838 text=
'x_rho y_rho Nbands'
1840 ELSE IF (int(aval(5)).eq.
l4dvar)
THEN
1841 text=
'x_rho y_rho s_rho Nbands'
1846 status=pio_put_att(piofile, piovar,
'grid', &
1848 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1856 status=pio_put_att(piofile, piovar,
'location', &
1858 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1867 IF (((abs(int(aval(5))).le.4).and.(nvdim.gt.2)).or. &
1868 & ((abs(int(aval(5))).gt.4).and.(nvdim.gt.3)))
THEN
1869 text=text(1:latt)//
' ocean_time'
1872 status=pio_put_att(piofile, piovar, trim(vinfo(22)), &
1874 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1888 latt=len_trim(vinfo(23))
1890 status=pio_put_att(piofile, piovar,
'formula_terms', &
1891 & vinfo(23)(1:latt))
1892 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1905 latt=len_trim(vinfo(14))
1907 status=pio_put_att(piofile, piovar,
'field', &
1908 & vinfo(14)(1:latt))
1909 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1919#if defined MASKING && !defined WRITE_WATER
1927 latt=len_trim(vinfo(22))
1928 IF (
PRESENT(setfillval))
THEN
1931 landfill=(latt.gt.0).and.(nvdim.gt.2)
1934 IF (vtype.eq.pio_double)
THEN
1935 status=pio_put_att(piofile, piovar,
'_FillValue', &
1937# ifndef NO_4BYTE_REALS
1938 ELSE IF (vtype.eq.pio_real)
THEN
1939 status=pio_put_att(piofile, piovar,
'_FillValue', &
1943 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
1957 DO j=1,len(vinfo(1))
1962 10
FORMAT (/,
' DEF_VAR_PIO - Grid ',i2.2, &
1963 &
', unable to define variable: ',a,/, &
1964 & 15x,
'in NetCDF file: ',a)
1965 20
FORMAT (/,
' DEF_VAR_PIO - error while setting deflate', &
1966 &
' parameters for variable: ',a,/,15x,
'in NetCDF file: ',a)
1967 30
FORMAT (/,
'DEF_VAR_NF90 - error while defining attribute: ',a, &
1968 &
' for variable: ',a,/,15x,
'in NetCDF file: ',a)