826
827
829
830
831
832 integer, intent(in) :: ng
833
834 logical, intent(in) :: ldef
835
836
837
838 logical :: got_var(-6:NV)
839
840 integer, parameter :: Natt = 25
841
842 integer :: fltdim, i, itrc, j, l
843 integer :: recdim, status
844
845 integer :: DimIDs(nDimID)
846 integer :: fgrd(2), start(2), total(2)
847
848 real(r8) :: Aval(6), Tinp(Nfloats(ng))
849
850 character (len=256) :: ncname
851 character (len=MaxLen) :: Vinfo(Natt)
852
853 character (len=*), parameter :: MyFile = &
854 & __FILE__//", def_floats_pio"
855
856 sourcefile=myfile
857
858
859
860
861
862 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
863 ncname=flt(ng)%name
864
865 IF (master) THEN
866 IF (ldef) THEN
867 WRITE (stdout,10) ng, trim(ncname)
868 ELSE
869 WRITE (stdout,20) ng, trim(ncname)
870 END IF
871 END IF
872
873
874
875
876
877 define : IF (ldef) THEN
879 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
880 IF (master) WRITE (stdout,30) trim(ncname)
881 RETURN
882 END IF
883
884
885
886
887
888 dimids=0
889
890# ifdef SOLVE3D
891 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 's_rho', &
892 & n(ng), dimids( 9))
893 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
894
895 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 's_w', &
896 & n(ng)+1, dimids(10))
897 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
898
899 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'tracer', &
900 & nt(ng), dimids(11))
901 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
902
903# ifdef SEDIMENT
904 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'NST', &
905 & nst, dimids(32))
906 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
907
908 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'Nbed', &
909 & nbed, dimids(16))
910 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
911# endif
912
913# ifdef ECOSIM
914 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'Nbands', &
915 & nbands, dimids(33))
916 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
917
918 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'Nphy', &
919 & nphy, dimids(25))
920 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
921
922 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'Nbac', &
923 & nbac, dimids(26))
924 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
925
926 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'Ndom', &
927 & ndom, dimids(27))
928 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
929
930 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'Nfec', &
931 & nfec, dimids(28))
932 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
933# endif
934# endif
935
936 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'drifter' , &
937 & nfloats(ng), dimids(15))
938 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
939
940 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'boundary', &
941 & 4, dimids(14))
942 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
943
944# ifdef FOUR_DVAR
945 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, 'Nstate', &
946 & nstatevar(ng), dimids(29))
947 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
948# endif
949
950 status=def_dim(ng, inlm, flt(ng)%pioFile, ncname, &
951 & trim(adjustl(vname(5,idtime))), &
952 & pio_unlimited, dimids(12))
953 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
954
955 recdim=dimids(12)
956 fltdim=dimids(15)
957
958
959
960 fgrd(1)=dimids(15)
961 fgrd(2)=dimids(12)
962
963
964
965 flt(ng)%Rindex=0
966
967
968
969 DO i=1,natt
970 DO j=1,len(vinfo(1))
971 vinfo(i)(j:j)=' '
972 END DO
973 END DO
974 DO i=1,6
975 aval(i)=0.0_r8
976 END DO
977
978
979
980
981
982 CALL def_info (ng, inlm, flt(ng)%pioFile, ncname, dimids)
983 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
984
985
986
987
988
989
990
991 vinfo( 1)=vname(1,idtime)
992 vinfo( 2)=vname(2,idtime)
993 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
994 vinfo( 4)=trim(rclock%calendar)
995 vinfo(14)=vname(4,idtime)
996 flt(ng)%pioVar(idtime)%dkind=
pio_tout
997 flt(ng)%pioVar(idtime)%gtype=0
998
999 status=def_var(ng, inlm, flt(ng)%pioFile, &
1000 & flt(ng)%pioVar(idtime)%vd, &
1001 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1002 & setparaccess = .true.)
1003 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1004
1005
1006
1007 vinfo( 1)='Xgrid'
1008 vinfo( 2)='x-grid floats locations'
1009 vinfo( 5)='valid_min'
1010 vinfo( 6)='valid_max'
1011 aval(2)=0.0_r8
1012 aval(3)=real(lm(ng)+1,r8)
1013 vinfo(14)='Xgrid, scalar, series'
1014 vinfo(16)=vname(1,idtime)
1015# ifndef NO_4BYTE_REALS
1016 vinfo(24)='_FillValue'
1017 aval(6)=spval
1018# endif
1019 flt(ng)%pioVar(idxgrd)%dkind=
pio_fout
1020 flt(ng)%pioVar(idxgrd)%gtype=0
1021
1022 status=def_var(ng, inlm, flt(ng)%pioFile, &
1023 & flt(ng)%pioVar(idxgrd)%vd, &
1024 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1025 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1026
1027
1028
1029 vinfo( 1)='Ygrid'
1030 vinfo( 2)='Y-grid floats locations'
1031 vinfo( 5)='valid_min'
1032 vinfo( 6)='valid_max'
1033 aval(2)=0.0_r8
1034 aval(3)=real(mm(ng)+1,r8)
1035 vinfo(14)='Ygrid, scalar, series'
1036 vinfo(16)=vname(1,idtime)
1037# ifndef NO_4BYTE_REALS
1038 vinfo(24)='_FillValue'
1039 aval(6)=spval
1040# endif
1041 flt(ng)%pioVar(idygrd)%dkind=
pio_fout
1042 flt(ng)%pioVar(idygrd)%gtype=0
1043
1044 status=def_var(ng, inlm, flt(ng)%pioFile, &
1045 & flt(ng)%pioVar(idygrd)%vd, &
1046 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1047 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1048
1049# ifdef SOLVE3D
1050
1051
1052
1053 vinfo( 1)='Zgrid'
1054 vinfo( 2)='Z-grid floats locations'
1055 vinfo( 5)='valid_min'
1056 vinfo( 6)='valid_max'
1057 aval(2)=0.0_r8
1058 aval(3)=real(n(ng),r8)
1059 vinfo(14)='Zgrid, scalar, series'
1060 vinfo(16)=vname(1,idtime)
1061# ifndef NO_4BYTE_REALS
1062 vinfo(24)='_FillValue'
1063 aval(6)=spval
1064# endif
1065 flt(ng)%pioVar(idzgrd)%dkind=
pio_fout
1066 flt(ng)%pioVar(idzgrd)%gtype=0
1067
1068 status=def_var(ng, inlm, flt(ng)%pioFile, &
1069 & flt(ng)%pioVar(idzgrd)%vd, &
1070 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1071 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1072# endif
1073
1074
1075
1076 IF (spherical) THEN
1077 vinfo( 1)='lon'
1078 vinfo( 2)='longitude of floats trajectories'
1079 vinfo( 3)='degree_east'
1080 vinfo( 5)='valid_min'
1081 vinfo( 6)='valid_max'
1082 vinfo(14)='lon, scalar, series'
1083 vinfo(16)=vname(1,idtime)
1084# ifndef NO_4BYTE_REALS
1085 vinfo(24)='_FillValue'
1086 aval(6)=spval
1087# endif
1088 aval(2)=-180.0_r8
1089 aval(3)=180.0_r8
1090 flt(ng)%pioVar(idglon)%dkind=
pio_fout
1091 flt(ng)%pioVar(idglon)%gtype=0
1092
1093 status=def_var(ng, inlm, flt(ng)%pioFile, &
1094 & flt(ng)%pioVar(idglon)%vd, &
1095 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1096 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1097
1098 vinfo( 1)='lat'
1099 vinfo( 2)='latitude of floats trajectories'
1100 vinfo( 3)='degree_north'
1101 vinfo( 5)='valid_min'
1102 vinfo( 6)='valid_max'
1103 vinfo(14)='lat, scalar, series'
1104 vinfo(16)=vname(1,idtime)
1105# ifndef NO_4BYTE_REALS
1106 vinfo(24)='_FillValue'
1107 aval(6)=spval
1108# endif
1109 aval(2)=-90.0_r8
1110 aval(3)=90.0_r8
1111 flt(ng)%pioVar(idglat)%dkind=
pio_fout
1112 flt(ng)%pioVar(idglat)%gtype=0
1113
1114 status=def_var(ng, inlm, flt(ng)%pioFile, &
1115 & flt(ng)%pioVar(idglat)%vd, &
1116 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1117 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1118 ELSE
1119 vinfo( 1)='x'
1120 vinfo( 2)='x-location of floats trajectories'
1121 vinfo( 3)='meter'
1122 vinfo(14)='x, scalar, series'
1123 vinfo(16)=vname(1,idtime)
1124# ifndef NO_4BYTE_REALS
1125 vinfo(24)='_FillValue'
1126 aval(6)=spval
1127# endif
1128 flt(ng)%pioVar(idglon)%dkind=
pio_fout
1129 flt(ng)%pioVar(idglon)%gtype=0
1130
1131 status=def_var(ng, inlm, flt(ng)%pioFile, &
1132 & flt(ng)%pioVar(idglon)%vd, &
1133 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1134 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1135
1136 vinfo( 1)='y'
1137 vinfo( 2)='y-location of floats trajectories'
1138 vinfo( 3)='meter'
1139 vinfo(14)='y, scalar, series'
1140 vinfo(16)=vname(1,idtime)
1141# ifndef NO_4BYTE_REALS
1142 vinfo(24)='_FillValue'
1143 aval(6)=spval
1144# endif
1145 flt(ng)%pioVar(idglat)%dkind=
pio_fout
1146 flt(ng)%pioVar(idglat)%gtype=0
1147
1148 status=def_var(ng, inlm, flt(ng)%pioFile, &
1149 & flt(ng)%pioVar(idglat)%vd, &
1150 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1151 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1152 END IF
1153
1154# ifdef SOLVE3D
1155
1156
1157
1158 vinfo( 1)='depth'
1159 vinfo( 2)='depth of floats trajectories'
1160 vinfo( 3)='meter'
1161 vinfo(14)='depth, scalar, series'
1162 vinfo(16)=vname(1,idtime)
1163# ifndef NO_4BYTE_REALS
1164 vinfo(24)='_FillValue'
1165 aval(6)=spval
1166# endif
1167 flt(ng)%pioVar(iddpth)%dkind=
pio_fout
1168 flt(ng)%pioVar(iddpth)%gtype=0
1169
1170 status=def_var(ng, inlm, flt(ng)%pioFile, &
1171 & flt(ng)%pioVar(iddpth)%vd, &
1172 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1173 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1174
1175
1176
1177 vinfo( 1)=vname(1,iddano)
1178 vinfo( 2)=vname(2,iddano)
1179 vinfo( 3)=vname(3,iddano)
1180 vinfo(14)=vname(4,iddano)
1181 vinfo(16)=vname(1,idtime)
1182# ifndef NO_4BYTE_REALS
1183 vinfo(24)='_FillValue'
1184 aval(6)=spval
1185# endif
1186 flt(ng)%pioVar(iddano)%dkind=
pio_fout
1187 flt(ng)%pioVar(iddano)%gtype=0
1188
1189 status=def_var(ng, inlm, flt(ng)%pioFile, &
1190 & flt(ng)%pioVar(iddano)%vd, &
1191 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1192 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1193
1194
1195
1196 DO itrc=1,nt(ng)
1197 vinfo( 1)=vname(1,idtvar(itrc))
1198 vinfo( 2)=vname(2,idtvar(itrc))
1199 vinfo( 3)=vname(3,idtvar(itrc))
1200 vinfo(14)=vname(4,idtvar(itrc))
1201 vinfo(16)=vname(1,idtime)
1202# ifndef NO_4BYTE_REALS
1203 vinfo(24)='_FillValue'
1204 aval(6)=spval
1205# endif
1206# ifdef SEDIMENT
1207 DO i=1,nst
1208 IF (itrc.eq.idsed(i)) THEN
1209 WRITE (vinfo(19),40) 1000.0_r8*sd50(i,ng)
1210 END IF
1211 END DO
1212# endif
1213 flt(ng)%pioTrc(itrc)%dkind=
pio_fout
1214 flt(ng)%pioTrc(itrc)%gtype=0
1215
1216 status=def_var(ng, inlm, flt(ng)%pioFile, &
1217 & flt(ng)%pioTrc(itrc)%vd, &
1218 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1219 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1220 END DO
1221# endif
1222
1223# ifdef FLOAT_OYSTER
1224
1225
1226
1227 vinfo( 1)='swim_time'
1228 vinfo( 2)='biological float swimming time'
1229 vinfo( 3)='s'
1230 vinfo(14)='swim_time, scalar, series'
1231 vinfo(16)=vname(1,idtime)
1232# ifndef NO_4BYTE_REALS
1233 vinfo(24)='_FillValue'
1234 aval(6)=spval
1235# endif
1236 flt(ng)%pioVar(idswim)%dkind=
pio_fout
1237 flt(ng)%pioVar(idswim)%gtype=0
1238
1239 status=def_var(ng, inlm, flt(ng)%pioFile, &
1240 & flt(ng)%pioVar(idswim)%vd, &
1241 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1242 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1243
1244
1245
1246 vinfo( 1)='w_bio'
1247 vinfo( 2)='biological float vertical velocity'
1248 vinfo( 3)='m/s'
1249 vinfo(14)='w_bio, scalar, series'
1250 vinfo(16)=vname(1,idtime)
1251# ifndef NO_4BYTE_REALS
1252 vinfo(24)='_FillValue'
1253 aval(6)=spval
1254# endif
1255 flt(ng)%pioVar(idwbio)%dkind=
pio_fout
1256 flt(ng)%pioVar(idwbio)%gtype=0
1257
1258 status=def_var(ng, inlm, flt(ng)%pioFile, &
1259 & flt(ng)%pioVar(idwbio)%vd, &
1260 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1261 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1262
1263
1264
1265 vinfo( 1)='bio_size'
1266 vinfo( 2)='biological float size'
1267 vinfo( 3)='um'
1268 vinfo(14)='bio_size, scalar, series'
1269 vinfo(16)=vname(1,idtime)
1270# ifndef NO_4BYTE_REALS
1271 vinfo(24)='_FillValue'
1272 aval(6)=spval
1273# endif
1274 flt(ng)%pioVar(idsize)%dkind=
pio_fout
1275 flt(ng)%pioVar(idsize)%gtype=0
1276
1277 status=def_var(ng, inlm, flt(ng)%pioFile, &
1278 & flt(ng)%pioVar(idsize)%vd, &
1279 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1280 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1281
1282
1283
1284 vinfo( 1)='bio_sink'
1285 vinfo( 2)='biological float sinking velocity'
1286 vinfo( 3)='m/s'
1287 vinfo(14)='bio_sink, scalar, series'
1288 vinfo(16)=vname(1,idtime)
1289# ifndef NO_4BYTE_REALS
1290 vinfo(24)='_FillValue'
1291 aval(6)=spval
1292# endif
1293 flt(ng)%pioVar(idwsin)%dkind=
pio_fout
1294 flt(ng)%pioVar(idwsin)%gtype=0
1295
1296 status=def_var(ng, inlm, flt(ng)%pioFile, &
1297 & flt(ng)%pioVar(idwsin)%vd, &
1298 &
pio_fout, 2, fgrd, aval, vinfo, ncname)
1299 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1300# endif
1301
1302
1303
1304 flt(ng)%Rindex=0
1305
1306
1307
1308
1309
1311 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1312
1313
1314
1315
1316
1317 CALL wrt_info (ng, inlm, flt(ng)%pioFile, ncname)
1318 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1319 END IF define
1320
1321
1322
1323
1324
1325
1326 query : IF (.not.ldef) THEN
1327 ncname=flt(ng)%name
1328
1329
1330
1332 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1333 WRITE (stdout,50) trim(ncname)
1334 RETURN
1335 END IF
1336
1337
1338
1340 & piofile = flt(ng)%pioFile)
1341 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1342
1343
1344
1345 DO i=1,n_dim
1346 IF (trim(dim_name(i)).eq.'drifter') THEN
1347 nfloats(ng)=dim_size(i)
1348 EXIT
1349 END IF
1350 END DO
1351
1352
1353
1355 & piofile = flt(ng)%pioFile)
1356 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1357
1358
1359
1360 DO i=1,nv
1361 got_var(i)=.false.
1362 END DO
1363
1364
1365
1366
1367 DO i=1,n_var
1368 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
1369 got_var(idtime)=.true.
1370 flt(ng)%pioVar(idtime)%vd=
var_desc(i)
1371 flt(ng)%pioVar(idtime)%dkind=
pio_tout
1372 flt(ng)%pioVar(idtime)%gtype=0
1373 ELSE IF (trim(var_name(i)).eq.'Xgrid') THEN
1374 got_var(idxgrd)=.true.
1375 flt(ng)%pioVar(idxgrd)%vd=
var_desc(i)
1376 flt(ng)%pioVar(idxgrd)%dkind=
pio_fout
1377 flt(ng)%pioVar(idxgrd)%gtype=0
1378 ELSE IF (trim(var_name(i)).eq.'Ygrid') THEN
1379 got_var(idygrd)=.true.
1380 flt(ng)%pioVar(idygrd)%vd=
var_desc(i)
1381 flt(ng)%pioVar(idygrd)%dkind=
pio_fout
1382 flt(ng)%pioVar(idygrd)%gtype=0
1383# ifdef SOLVE3D
1384 ELSE IF (trim(var_name(i)).eq.'Zgrid') THEN
1385 got_var(idzgrd)=.true.
1386 flt(ng)%pioVar(idzgrd)%vd=
var_desc(i)
1387 flt(ng)%pioVar(idzgrd)%dkind=
pio_fout
1388 flt(ng)%pioVar(idzgrd)%gtype=0
1389# endif
1390 ELSE IF (spherical.and.trim(var_name(i)).eq.'lon') THEN
1391 got_var(idglon)=.true.
1392 flt(ng)%pioVar(idglon)%vd=
var_desc(i)
1393 flt(ng)%pioVar(idglon)%dkind=
pio_fout
1394 flt(ng)%pioVar(idglon)%gtype=0
1395 ELSE IF (spherical.and.trim(var_name(i)).eq.'lat') THEN
1396 got_var(idglat)=.true.
1397 flt(ng)%pioVar(idglat)%vd=
var_desc(i)
1398 flt(ng)%pioVar(idglat)%dkind=
pio_fout
1399 flt(ng)%pioVar(idglat)%gtype=0
1400 ELSE IF (.not.spherical.and.trim(var_name(i)).eq.'x') THEN
1401 got_var(idglon)=.true.
1402 flt(ng)%pioVar(idglon)%vd=
var_desc(i)
1403 flt(ng)%pioVar(idglon)%dkind=
pio_fout
1404 flt(ng)%pioVar(idglon)%gtype=0
1405 ELSE IF (.not.spherical.and.trim(var_name(i)).eq.'y') THEN
1406 got_var(idglat)=.true.
1407 flt(ng)%pioVar(idglat)%vd=
var_desc(i)
1408 flt(ng)%pioVar(idglat)%dkind=
pio_fout
1409 flt(ng)%pioVar(idglat)%gtype=0
1410# ifdef SOLVE3D
1411 ELSE IF (trim(var_name(i)).eq.'depth') THEN
1412 got_var(iddpth)=.true.
1413 flt(ng)%pioVar(iddpth)%vd=
var_desc(i)
1414 flt(ng)%pioVar(iddpth)%dkind=
pio_fout
1415 flt(ng)%pioVar(iddpth)%gtype=0
1416 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
1417 got_var(iddano)=.true.
1418 flt(ng)%pioVar(iddano)%vd=
var_desc(i)
1419 flt(ng)%pioVar(iddano)%dkind=
pio_fout
1420 flt(ng)%pioVar(iddano)%gtype=0
1421# endif
1422# ifdef FLOAT_OYSTER
1423 ELSE IF (trim(var_name(i)).eq.'swim_time') THEN
1424 got_var(idswim)=.true.
1425 flt(ng)%pioVar(idswim)%vd=
var_desc(i)
1426 flt(ng)%pioVar(idswim)%dkind=
pio_fout
1427 flt(ng)%pioVar(idswim)%gtype=0
1428 ELSE IF (trim(var_name(i)).eq.'w_bio') THEN
1429 got_var(idwbio)=.true.
1430 flt(ng)%pioVar(idwbio)%vd=
var_desc(i)
1431 flt(ng)%pioVar(idwbio)%dkind=
pio_fout
1432 flt(ng)%pioVar(idwbio)%gtype=0
1433 ELSE IF (trim(var_name(i)).eq.'bio_size') THEN
1434 got_var(idsize)=.true.
1435 flt(ng)%pioVar(idsize)%vd=
var_desc(i)
1436 flt(ng)%pioVar(idsize)%dkind=
pio_fout
1437 flt(ng)%pioVar(idsize)%gtype=0
1438 ELSE IF (trim(var_name(i)).eq.'bio_sink') THEN
1439 got_var(idwsin)=.true.
1440 flt(ng)%pioVar(idwsin)%vd=
var_desc(i)
1441 flt(ng)%pioVar(idwsin)%dkind=
pio_fout
1442 flt(ng)%pioVar(idwsin)%gtype=0
1443# endif
1444 END IF
1445# ifdef SOLVE3D
1446 DO itrc=1,nt(ng)
1447 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
1448 got_var(idtvar(itrc))=.true.
1449 flt(ng)%pioTrc(itrc)%vd=
var_desc(i)
1450 flt(ng)%pioTrc(itrc)%dkind=
pio_fout
1451 flt(ng)%pioTrc(itrc)%gtype=0
1452 END IF
1453 END DO
1454# endif
1455 END DO
1456
1457
1458
1459 IF (.not.got_var(idtime)) THEN
1460 IF (master) WRITE (stdout,60) trim(vname(1,idtime)), &
1461 & trim(ncname)
1462 exit_flag=3
1463 RETURN
1464 END IF
1465 IF (.not.got_var(idxgrd)) THEN
1466 IF (master) WRITE (stdout,60) 'Xgrid', trim(ncname)
1467 exit_flag=3
1468 RETURN
1469 END IF
1470 IF (.not.got_var(idygrd)) THEN
1471 IF (master) WRITE (stdout,60) 'Ygrid', trim(ncname)
1472 exit_flag=3
1473 RETURN
1474 END IF
1475# ifdef SOLVE3D
1476 IF (.not.got_var(idzgrd)) THEN
1477 IF (master) WRITE (stdout,60) 'Zgrid', trim(ncname)
1478 exit_flag=3
1479 RETURN
1480 END IF
1481# endif
1482 IF (.not.got_var(idglon)) THEN
1483 IF (spherical) THEN
1484 IF (master) WRITE (stdout,60) 'lon', trim(ncname)
1485 ELSE
1486 IF (master) WRITE (stdout,60) 'x', trim(ncname)
1487 END IF
1488 exit_flag=3
1489 RETURN
1490 END IF
1491 IF (.not.got_var(idglat)) THEN
1492 IF (spherical) THEN
1493 IF (master) WRITE (stdout,60) 'lat', trim(ncname)
1494 ELSE
1495 IF (master) WRITE (stdout,60) 'y', trim(ncname)
1496 END IF
1497 exit_flag=3
1498 RETURN
1499 END IF
1500# ifdef SOLVE3D
1501 IF (.not.got_var(iddpth)) THEN
1502 IF (master) WRITE (stdout,60) 'depth', trim(ncname)
1503 exit_flag=3
1504 RETURN
1505 END IF
1506 IF (.not.got_var(iddano)) THEN
1507 IF (master) WRITE (stdout,60) trim(vname(1,iddano)), &
1508 & trim(ncname)
1509 exit_flag=3
1510 RETURN
1511 END IF
1512# endif
1513# ifdef FLOAT_OYSTER
1514 IF (.not.got_var(idswim)) THEN
1515 IF (master) WRITE (stdout,60) 'swim_time', trim(ncname)
1516 exit_flag=3
1517 RETURN
1518 END IF
1519 IF (.not.got_var(idwbio)) THEN
1520 IF (master) WRITE (stdout,60) 'w_bio', trim(ncname)
1521 exit_flag=3
1522 RETURN
1523 END IF
1524 IF (.not.got_var(idsize)) THEN
1525 IF (master) WRITE (stdout,60) 'bio_size', trim(ncname)
1526 exit_flag=3
1527 RETURN
1528 END IF
1529 IF (.not.got_var(idwsin)) THEN
1530 IF (master) WRITE (stdout,60) 'bio_sink', trim(ncname)
1531 exit_flag=3
1532 RETURN
1533 END IF
1534# endif
1535# ifdef SOLVE3D
1536 DO itrc=1,nt(ng)
1537 IF (.not.got_var(idtvar(itrc))) THEN
1538 IF (master) WRITE (stdout,60) trim(vname(1,idtvar(itrc))), &
1539 & trim(ncname)
1540 exit_flag=3
1541 RETURN
1542 END IF
1543 END DO
1544# endif
1545
1546
1547
1548
1549
1550
1551
1552 IF (frrec(ng).lt.0) THEN
1553 flt(ng)%Rindex=rec_size
1554 ELSE
1555 flt(ng)%Rindex=abs(frrec(ng))
1556 END IF
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567# ifdef SOLVE3D
1569 & tinp, &
1570 & piofile = flt(ng)%pioFile, &
1571 & start = (/1,flt(ng)%Rindex/), &
1572 & total = (/nfloats(ng),1/))
1573 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1574
1575 DO l=1,nfloats(ng)
1576 IF ((tinp(l).gt.real(n(ng),r8)).or. &
1577 & (tinp(l).lt.0.0_r8)) THEN
1578 drifter(ng)%bounded(l)=.false.
1579 ELSE
1580 drifter(ng)%bounded(l)=.true.
1581 DO i=0,nft
1582 drifter(ng)%track(izgrd,i,l)=tinp(l)
1583 drifter(ng)%track(izrhs,i,l)=0.0_r8
1584 END DO
1585 END IF
1586 END DO
1587
1588# endif
1590 & tinp, &
1591 & piofile = flt(ng)%pioFile, &
1592 & start = (/1,flt(ng)%Rindex/), &
1593 & total = (/nfloats(ng),1/))
1594 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1595
1596 DO l=1,nfloats(ng)
1597 IF ((tinp(l).gt.real(lm(ng)+1,r8)-0.5_r8).or. &
1598 & (tinp(l).lt.0.5_r8)) THEN
1599 drifter(ng)%bounded(l)=.false.
1600 ELSE
1601 drifter(ng)%bounded(l)=.true.
1602 DO i=0,nft
1603 drifter(ng)%track(ixgrd,i,l)=tinp(l)
1604 drifter(ng)%track(ixrhs,i,l)=0.0_r8
1605 END DO
1606 END IF
1607 END DO
1608
1610 & tinp, &
1611 & piofile = flt(ng)%pioFile, &
1612 & start = (/1,flt(ng)%Rindex/), &
1613 & total = (/nfloats(ng),1/))
1614 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1615
1616 DO l=1,nfloats(ng)
1617 IF ((tinp(l).gt.real(mm(ng)+1,r8)-0.5_r8).or. &
1618 & (tinp(l).lt.0.5_r8)) THEN
1619 drifter(ng)%bounded(l)=.false.
1620 ELSE
1621 drifter(ng)%bounded(l)=.true.
1622 DO i=0,nft
1623 drifter(ng)%track(iygrd,i,l)=tinp(l)
1624 drifter(ng)%track(iyrhs,i,l)=0.0_r8
1625 END DO
1626 END IF
1627 END DO
1628
1629 END IF query
1630
1631 10 FORMAT (2x,'DEF_FLOATS_PIO - creating floats file,',t56, &
1632 & 'Grid ',i2.2,': ',a)
1633 20 FORMAT (2x,'DEF_FLOATS_PIO - inquiring floats file,',t56, &
1634 & 'Grid ',i2.2,': ',a)
1635 30 FORMAT (/,' DEF_FLOATS_PIO - unable to create floats NetCDF', &
1636 & ' file: ',a)
1637 40 FORMAT (1pe11.4,1x,'millimeter')
1638 50 FORMAT (/,' DEF_FLOATS_PIO - unable to open floats NetCDF', &
1639 & ' file: ',a)
1640 60 FORMAT (/,' DEF_FLOATS_PIO - unable to find variable: ',a,2x, &
1641 & ' in floats NetCDF file: ',a)
1642
1643 RETURN
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
subroutine, public pio_netcdf_create(ng, model, ncname, piofile)
subroutine, public pio_netcdf_inq_var(ng, model, ncname, piofile, myvarname, searchvar, piovar, nvardim, nvaratt)
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)
integer, parameter pio_tout
subroutine, public pio_netcdf_enddef(ng, model, ncname, piofile)