771
772
774
775
776
777 logical, dimension(Nvar), intent(out) :: get_var
778 logical, dimension(Nvar), intent(out) :: have_var
779
780 integer, intent(in) :: ng, model, Nvar
781 integer, intent(inout) :: Nrec
782
783 character (len=*), intent(in) :: ncname
784 character (len=*), intent(in) :: string
785
786 character (len=*), intent(inout) :: tvarnam
787
788 TYPE (file_desc_t), intent(inout) :: pioFile
789
790
791
792 integer :: IDmod, i, itrc
793
794 character (len=*), parameter :: MyFile = &
795 & __FILE__//", checkvars_pio"
796
797 sourcefile=myfile
798
799
800
801
802
803
804
805
806
807 IF ((model.lt.1).or.(model.gt.4)) THEN
808 idmod=inlm
809 ELSE
810 idmod=model
811 END IF
812
813
814
816 & piofile = piofile)
817 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
818 nrec=rec_size
819
820
821
823 & piofile = piofile)
824 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
825
826
827
828 DO i=1,nvar
829 get_var(i)=.false.
830 have_var(i)=.false.
831 END DO
832
833
834
835
836
837
838
839
840 IF ((model.le.11).or.(model.eq.14).or.(model.eq.15)) THEN
841# ifdef ANA_INITIAL
842 IF (nrrec(ng).ne.0) THEN
843 get_var(idfsur)=.true.
844 get_var(idubar)=.true.
845 get_var(idvbar)=.true.
846# ifdef SOLVE3D
847 get_var(iduvel)=.true.
848 get_var(idvvel)=.true.
849 DO itrc=1,nat
850 get_var(idtvar(itrc))=.true.
851 END DO
852# endif
853 END IF
854# else
855 get_var(idfsur)=.true.
856 IF (model.ne.7) THEN
857 get_var(idubar)=.true.
858 get_var(idvbar)=.true.
859 END IF
860# ifdef SOLVE3D
861 get_var(iduvel)=.true.
862 get_var(idvvel)=.true.
863 DO itrc=1,nat
864 get_var(idtvar(itrc))=.true.
865 END DO
866# endif
867# endif
868# ifdef SOLVE3D
869# if defined BIOLOGY
870# if defined ANA_BIOLOGY
871 IF (nrrec(ng).ne.0) THEN
872 DO itrc=1,nbt
873 get_var(idtvar(idbio(itrc)))=.true.
874 END DO
875 END IF
876# else
877 DO itrc=1,nbt
878 get_var(idtvar(idbio(itrc)))=.true.
879 END DO
880# endif
881# endif
882# if defined T_PASSIVE
883# if defined ANA_PASSIVE
884 IF (nrrec(ng).ne.0) THEN
885 DO itrc=1,npt
886 get_var(idtvar(inert(itrc)))=.true.
887 END DO
888 END IF
889# else
890 DO itrc=1,npt
891 get_var(idtvar(inert(itrc)))=.true.
892 END DO
893# endif
894# endif
895# ifdef SEDIMENT
896# ifdef ANA_SEDIMENT
897 IF (nrrec(ng).ne.0) THEN
898 DO itrc=1,nst
899 get_var(idtvar(idsed(itrc)))=.true.
900 get_var(idfrac(itrc))=.true.
901 get_var(idbmas(itrc))=.true.
902 END DO
903 DO itrc=1,mbedp
904 get_var(idsbed(itrc))=.true.
905 END DO
906 END IF
907# else
908 DO itrc=1,nst
909 get_var(idtvar(idsed(itrc)))=.true.
910 get_var(idfrac(itrc))=.true.
911 get_var(idbmas(itrc))=.true.
912 END DO
913 DO itrc=1,mbedp
914 get_var(idsbed(itrc))=.true.
915 END DO
916# endif
917# ifdef BEDLOAD
918 IF (nrrec(ng).ne.0) THEN
919 DO itrc=1,nst
920 get_var(idubld(itrc))=.true.
921 get_var(idvbld(itrc))=.true.
922 END DO
923 END IF
924# endif
925# ifdef SED_MORPH
926 IF (nrrec(ng).ne.0) THEN
927 get_var(idbath)=.true.
928 END IF
929# endif
930# endif
931# if defined SEDIMENT || defined BBL_MODEL
932# ifndef ANA_SEDIMENT
933 DO itrc=1,mbotp
934 get_var(idbott(itrc))=.true.
935 END DO
936# endif
937# endif
938# endif
939# ifdef PERFECT_RESTART
940
941
942
943 IF (((model.eq.0).or.(model.eq.inlm)).and.(nrrec(ng).ne.0)) THEN
944# ifdef SOLVE3D
945 get_var(idru3d)=.true.
946 get_var(idrv3d)=.true.
947# endif
948 get_var(idrzet)=.true.
949 get_var(idru2d)=.true.
950 get_var(idrv2d)=.true.
951# if defined GLS_MIXING || defined MY25_MIXING
952 get_var(idmtke)=.true.
953 get_var(idmtls)=.true.
954 get_var(idvmls)=.true.
955 get_var(idvmkk)=.true.
956# ifdef GLS_MIXING
957 get_var(idvmkp)=.true.
958# endif
959# endif
960 END IF
961# endif
962 END IF
963# ifdef ADJUST_BOUNDARY
964
965
966
967 IF ((model.eq.iadm).or.(model.eq.itlm).or.(model.eq.inlm).or. &
968 & (model.eq.irpm).or.(model.eq.5).or.(model.eq.12).or. &
969 & (model.eq.16)) THEN
970 IF (any(lobc(:,isfsur,ng))) THEN
971 get_var(idsbry(isfsur))=.true.
972 END IF
973 IF (any(lobc(:,isubar,ng))) THEN
974 get_var(idsbry(isubar))=.true.
975 END IF
976 IF (any(lobc(:,isvbar,ng))) THEN
977 get_var(idsbry(isvbar))=.true.
978 END IF
979# ifdef SOLVE3D
980 IF (any(lobc(:,isuvel,ng))) THEN
981 get_var(idsbry(isuvel))=.true.
982 END IF
983 IF (any(lobc(:,isvvel,ng))) THEN
984 get_var(idsbry(isvvel))=.true.
985 END IF
986 DO itrc=1,nt(ng)
987 IF (any(lobc(:,istvar(itrc),ng))) THEN
988 get_var(idsbry(istvar(itrc)))=.true.
989 END IF
990 END DO
991# endif
992 END IF
993# endif
994# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
995
996
997
998 IF ((model.eq.iadm).or.(model.eq.itlm).or.(model.eq.inlm).or. &
999 & (model.eq.irpm).or.(model.eq.5).or.(model.eq.13).or. &
1000 & (model.eq.17)) THEN
1001# ifdef ADJUST_STFLUX
1002 DO itrc=1,nt(ng)
1003 IF (lstflux(itrc,ng)) THEN
1004 get_var(idtsur(itrc))=.true.
1005 END IF
1006 END DO
1007# endif
1008# ifdef ADJUST_WSTRESS
1009 get_var(idusms)=.true.
1010 get_var(idvsms)=.true.
1011# endif
1012 END IF
1013# endif
1014
1015
1016
1017
1018 DO i=1,n_var
1019 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
1020 tvarnam=trim(var_name(i))
1021 have_var(idtime)=.true.
1022# if defined SEDIMENT && defined SED_MORPH
1023 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idbath))) THEN
1024 have_var(idbath)=.true.
1025# endif
1026# ifdef ADJUST_BOUNDARY
1027 ELSE IF (any(lobc(:,isfsur,ng)).and. &
1028 & (trim(var_name(i)).eq. &
1029 & trim(vname(1,idsbry(isfsur))))) THEN
1030 have_var(idsbry(isfsur))=.true.
1031 ELSE IF (any(lobc(:,isubar,ng)).and. &
1032 & (trim(var_name(i)).eq. &
1033 & trim(vname(1,idsbry(isubar))))) THEN
1034 have_var(idsbry(isubar))=.true.
1035 ELSE IF (any(lobc(:,isvbar,ng)).and. &
1036 & (trim(var_name(i)).eq. &
1037 & trim(vname(1,idsbry(isvbar))))) THEN
1038 have_var(idsbry(isvbar))=.true.
1039# ifdef SOLVE3D
1040 ELSE IF (any(lobc(:,isuvel,ng)).and. &
1041 & (trim(var_name(i)).eq. &
1042 & trim(vname(1,idsbry(isuvel))))) THEN
1043 have_var(idsbry(isuvel))=.true.
1044 ELSE IF (any(lobc(:,isvvel,ng)).and. &
1045 & (trim(var_name(i)).eq. &
1046 & trim(vname(1,idsbry(isvvel))))) THEN
1047 have_var(idsbry(isvvel))=.true.
1048# endif
1049# endif
1050# ifdef SOLVE3D
1051 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idkver))) THEN
1052 have_var(idkver)=.true.
1053 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
1054 have_var(iduvel)=.true.
1055 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idru3d))) THEN
1056 have_var(idru3d)=.true.
1057 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
1058 have_var(idvvel)=.true.
1059 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrv3d))) THEN
1060 have_var(idrv3d)=.true.
1061# if defined GLS_MIXING || defined MY25_MIXING || defined LMD_MIXING
1062 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
1063 have_var(idvvis)=.true.
1064 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
1065 have_var(idtdif)=.true.
1066 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
1067 have_var(idsdif)=.true.
1068# ifdef LMD_SKPP
1069 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
1070 have_var(idhsbl)=.true.
1071# endif
1072# ifdef LMD_BKPP
1073 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
1074 have_var(idhbbl)=.true.
1075# endif
1076# ifdef LMD_NONLOCAL
1077 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idghat(itemp)))) THEN
1078 have_var(idghat(itemp))=.true.
1079# ifdef SALINITY
1080 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idghat(isalt)))) THEN
1081 have_var(idghat(isalt))=.true.
1082# endif
1083# endif
1084# endif
1085# if defined GLS_MIXING || defined MY25_MIXING
1086 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtke))) THEN
1087 have_var(idmtke)=.true.
1088 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtls))) THEN
1089 have_var(idmtls)=.true.
1090 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvmls))) THEN
1091 have_var(idvmls)=.true.
1092 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvmkk))) THEN
1093 have_var(idvmkk)=.true.
1094# ifdef GLS_MIXING
1095 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvmkp))) THEN
1096 have_var(idvmkp)=.true.
1097# endif
1098# endif
1099# endif
1100# ifdef ADJUST_WSTRESS
1101 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
1102 have_var(idusms)=.true.
1103 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
1104 have_var(idvsms)=.true.
1105# endif
1106 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
1107 have_var(idfsur)=.true.
1108 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrzet))) THEN
1109 have_var(idrzet)=.true.
1110 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
1111 have_var(idubar)=.true.
1112 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idru2d))) THEN
1113 have_var(idru2d)=.true.
1114 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
1115 have_var(idvbar)=.true.
1116 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrv2d))) THEN
1117 have_var(idrv2d)=.true.
1118 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idkhor))) THEN
1119 have_var(idkhor)=.true.
1120 END IF
1121# ifdef SOLVE3D
1122 DO itrc=1,nt(ng)
1123 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
1124 have_var(idtvar(itrc))=.true.
1125# ifdef ADJUST_BOUNDARY
1126 ELSE IF (any(lobc(:,istvar(itrc),ng)).and. &
1127 & (trim(var_name(i)).eq. &
1128 & trim(vname(1,idsbry(istvar(itrc)))))) THEN
1129 have_var(idsbry(istvar(itrc)))=.true.
1130# endif
1131# ifdef ADJUST_STFLUX
1132 ELSE IF (trim(var_name(i)).eq. &
1133 & trim(vname(1,idtsur(itrc)))) THEN
1134 have_var(idtsur(itrc))=.true.
1135# endif
1136 END IF
1137 END DO
1138# ifdef SEDIMENT
1139 DO itrc=1,nst
1140 IF (trim(var_name(i)).eq.trim(vname(1,idfrac(itrc)))) THEN
1141 have_var(idfrac(itrc))=.true.
1142 ELSE IF (trim(var_name(i)).eq. &
1143 & trim(vname(1,idbmas(itrc)))) THEN
1144 have_var(idbmas(itrc))=.true.
1145# ifdef BEDLOAD
1146 ELSE IF (trim(var_name(i)).eq. &
1147 & trim(vname(1,idubld(itrc)))) THEN
1148 have_var(idubld(itrc))=.true.
1149 ELSE IF (trim(var_name(i)).eq. &
1150 & trim(vname(1,idvbld(itrc)))) THEN
1151 have_var(idvbld(itrc))=.true.
1152# endif
1153 END IF
1154 END DO
1155 DO itrc=1,mbedp
1156 IF (trim(var_name(i)).eq.trim(vname(1,idsbed(itrc)))) THEN
1157 have_var(idsbed(itrc))=.true.
1158 END IF
1159 END DO
1160# endif
1161# if defined SEDIMENT || defined BBL_MODEL
1162 DO itrc=1,mbotp
1163 IF (trim(var_name(i)).eq.trim(vname(1,idbott(itrc)))) THEN
1164 have_var(idbott(itrc))=.true.
1165 END IF
1166 END DO
1167# endif
1168# endif
1169 END DO
1170
1171
1172
1173 IF (.not.have_var(idtime)) THEN
1174 IF (master) WRITE (stdout,10) string, trim(vname(1,idtime)), &
1175 & trim(ncname)
1176 exit_flag=2
1177 RETURN
1178 END IF
1179# if defined SEDIMENT && defined SED_MORPH
1180 IF (.not.have_var(idbath).and.get_var(idbath)) THEN
1181 IF (master) WRITE (stdout,10) string, trim(vname(1,idbath)), &
1182 & trim(ncname)
1183 exit_flag=2
1184 RETURN
1185 END IF
1186# endif
1187 IF (.not.have_var(idfsur).and.get_var(idfsur)) THEN
1188 IF (master) WRITE (stdout,10) string, trim(vname(1,idfsur)), &
1189 & trim(ncname)
1190 exit_flag=2
1191 RETURN
1192 END IF
1193# ifdef ADJUST_BOUNDARY
1194 IF ((model.eq.5).or.(model.eq.6)) THEN
1195 IF (.not.have_var(idsbry(isfsur)).and. &
1196 & any(lobc(:,isfsur,ng)).and.get_var(idsbry(isfsur))) THEN
1197 IF (master) WRITE (stdout,10) string, &
1198 & trim(vname(1,idsbry(isfsur))), &
1199 & trim(ncname)
1200 exit_flag=2
1201 RETURN
1202 END IF
1203 IF (.not.have_var(idsbry(isubar)).and. &
1204 & any(lobc(:,isubar,ng)).and.get_var(idsbry(isubar))) THEN
1205 IF (master) WRITE (stdout,10) string, &
1206 & trim(vname(1,idsbry(isubar))), &
1207 & trim(ncname)
1208 exit_flag=2
1209 RETURN
1210 END IF
1211 IF (.not.have_var(idsbry(isvbar)).and. &
1212 & any(lobc(:,isvbar,ng)).and.get_var(idsbry(isvbar))) THEN
1213 IF (master) WRITE (stdout,10) string, &
1214 & trim(vname(1,idsbry(isvbar))), &
1215 & trim(ncname)
1216 exit_flag=2
1217 RETURN
1218 END IF
1219# ifdef SOLVE3D
1220 IF (.not.have_var(idsbry(isuvel)).and. &
1221 & any(lobc(:,isuvel,ng)).and.get_var(idsbry(isuvel))) THEN
1222 IF (master) WRITE (stdout,10) string, &
1223 & trim(vname(1,idsbry(isuvel))), &
1224 & trim(ncname)
1225 exit_flag=2
1226 RETURN
1227 END IF
1228 IF (.not.have_var(idsbry(isvvel)).and. &
1229 & any(lobc(:,isvvel,ng)).and.get_var(idsbry(isvvel))) THEN
1230 IF (master) WRITE (stdout,10) string, &
1231 & trim(vname(1,idsbry(isvvel))), &
1232 & trim(ncname)
1233 exit_flag=2
1234 RETURN
1235 END IF
1236# endif
1237 END IF
1238# endif
1239 IF (.not.have_var(idrzet).and.get_var(idrzet)) THEN
1240 IF (master) WRITE (stdout,10) string, trim(vname(1,idrzet)), &
1241 & trim(ncname)
1242 exit_flag=2
1243 RETURN
1244 END IF
1245 IF (.not.have_var(idubar).and.get_var(idubar)) THEN
1246 IF (master) WRITE (stdout,10) string, trim(vname(1,idubar)), &
1247 & trim(ncname)
1248 exit_flag=2
1249 RETURN
1250 END IF
1251 IF (.not.have_var(idru2d).and.get_var(idru2d)) THEN
1252 IF (master) WRITE (stdout,10) string, trim(vname(1,idru2d)), &
1253 & trim(ncname)
1254 exit_flag=2
1255 RETURN
1256 END IF
1257 IF (.not.have_var(idvbar).and.get_var(idvbar)) THEN
1258 IF (master) WRITE (stdout,10) string, trim(vname(1,idvbar)), &
1259 & trim(ncname)
1260 exit_flag=2
1261 RETURN
1262 END IF
1263 IF (.not.have_var(idrv2d).and.get_var(idrv2d)) THEN
1264 IF (master) WRITE (stdout,10) string, trim(vname(1,idrv2d)), &
1265 & trim(ncname)
1266 exit_flag=2
1267 RETURN
1268 END IF
1269# ifdef ADJUST_WSTRESS
1270 IF ((model.eq.5).or.(model.eq.6)) THEN
1271 IF (.not.have_var(idusms).and.get_var(idusms)) THEN
1272 IF (master) WRITE (stdout,10) string, trim(vname(1,idusms)), &
1273 & trim(ncname)
1274 exit_flag=2
1275 RETURN
1276 END IF
1277 IF (.not.have_var(idvsms).and.get_var(idvsms)) THEN
1278 IF (master) WRITE (stdout,10) string, trim(vname(1,idvsms)), &
1279 & trim(ncname)
1280 exit_flag=2
1281 RETURN
1282 END IF
1283 END IF
1284# endif
1285# ifdef SOLVE3D
1286 IF (.not.have_var(iduvel).and.get_var(iduvel)) THEN
1287 IF (master) WRITE (stdout,10) string, trim(vname(1,iduvel)), &
1288 & trim(ncname)
1289 exit_flag=2
1290 RETURN
1291 END IF
1292 IF (.not.have_var(idru3d).and.get_var(idru3d)) THEN
1293 IF (master) WRITE (stdout,10) string, trim(vname(1,idru3d)), &
1294 & trim(ncname)
1295 exit_flag=2
1296 RETURN
1297 END IF
1298 IF (.not.have_var(idvvel).and.get_var(idvvel)) THEN
1299 IF (master) WRITE (stdout,10) string, trim(vname(1,idvvel)), &
1300 & trim(ncname)
1301 exit_flag=2
1302 RETURN
1303 END IF
1304 IF (.not.have_var(idrv3d).and.get_var(idrv3d)) THEN
1305 IF (master) WRITE (stdout,10) string, trim(vname(1,idrv3d)), &
1306 & trim(ncname)
1307 exit_flag=2
1308 RETURN
1309 END IF
1310 DO itrc=1,nt(ng)
1311 IF (.not.have_var(idtvar(itrc)).and. &
1312 & get_var(idtvar(itrc))) THEN
1313 IF (master) WRITE (stdout,10) string, &
1314 & trim(vname(1,idtvar(itrc))), &
1315 & trim(ncname)
1316 exit_flag=2
1317 RETURN
1318 END IF
1319 END DO
1320# ifdef ADJUST_BOUNDARY
1321 IF ((model.eq.5).or.(model.eq.6)) THEN
1322 DO itrc=1,nt(ng)
1323 IF (.not.have_var(idsbry(istvar(itrc))).and. &
1324 & any(lobc(:,istvar(itrc),ng)).and. &
1325 & get_var(idsbry(istvar(itrc)))) THEN
1326 IF (master) THEN
1327 WRITE (stdout,10) string, &
1328 & trim(vname(1,idsbry(istvar(itrc)))), &
1329 & trim(ncname)
1330 exit_flag=2
1331 RETURN
1332 END IF
1333 END IF
1334 END DO
1335 END IF
1336# endif
1337# ifdef ADJUST_STFLUX
1338 IF ((model.eq.5).or.(model.eq.6)) THEN
1339 DO itrc=1,nt(ng)
1340 IF (.not.have_var(idtsur(itrc)).and. &
1341 & get_var(idtsur(itrc)).and.lstflux(itrc,ng)) THEN
1342 IF (master) WRITE (stdout,10) string, &
1343 & trim(vname(1,idtsur(itrc))), &
1344 & trim(ncname)
1345 exit_flag=2
1346 RETURN
1347 END IF
1348 END DO
1349 END IF
1350# endif
1351# if defined GLS_MIXING || defined MY25_MIXING
1352 IF (.not.have_var(idmtke).and.get_var(idmtke)) THEN
1353 IF (master) WRITE (stdout,10) string, trim(vname(1,idmtke)), &
1354 & trim(ncname)
1355 exit_flag=2
1356 RETURN
1357 END IF
1358 IF (.not.have_var(idmtls).and.get_var(idmtls)) THEN
1359 IF (master) WRITE (stdout,10) string, trim(vname(1,idmtls)), &
1360 & trim(ncname)
1361 exit_flag=2
1362 RETURN
1363 END IF
1364 IF (.not.have_var(idvmls).and.get_var(idvmls)) THEN
1365 IF (master) WRITE (stdout,10) string, trim(vname(1,idvmls)), &
1366 & trim(ncname)
1367 exit_flag=2
1368 RETURN
1369 END IF
1370 IF (.not.have_var(idvmkk).and.get_var(idvmkk)) THEN
1371 IF (master) WRITE (stdout,10) string, trim(vname(1,idvmkk)), &
1372 & trim(ncname)
1373 exit_flag=2
1374 RETURN
1375 END IF
1376# ifdef GLS_MIXING
1377 IF (.not.have_var(idvmkp).and.get_var(idvmkp)) THEN
1378 IF (master) WRITE (stdout,10) string, trim(vname(1,idvmkp)), &
1379 & trim(ncname)
1380 exit_flag=2
1381 RETURN
1382 END IF
1383# endif
1384# endif
1385# ifdef SEDIMENT
1386 DO itrc=1,nst
1387 IF (.not.have_var(idfrac(itrc)).and. &
1388 & get_var(idfrac(itrc))) THEN
1389 IF (master) WRITE (stdout,10) string, &
1390 & trim(vname(1,idfrac(itrc))), &
1391 & trim(ncname)
1392 exit_flag=2
1393 RETURN
1394 END IF
1395 IF (.not.have_var(idbmas(itrc)).and. &
1396 & get_var(idbmas(itrc))) THEN
1397 IF (master) WRITE (stdout,10) string, &
1398 & trim(vname(1,idbmas(itrc))), &
1399 & trim(ncname)
1400 exit_flag=2
1401 RETURN
1402 END IF
1403# ifdef BEDLOAD
1404 IF (.not.have_var(idubld(itrc)).and. &
1405 & get_var(idubld(itrc))) THEN
1406 IF (master) WRITE (stdout,10) string, &
1407 & trim(vname(1,idubld(itrc))), &
1408 & trim(ncname)
1409 exit_flag=2
1410 RETURN
1411 END IF
1412 IF (.not.have_var(idvbld(itrc)).and. &
1413 & get_var(idvbld(itrc))) THEN
1414 IF (master) WRITE (stdout,10) string, &
1415 & trim(vname(1,idvbld(itrc))), &
1416 & trim(ncname)
1417 exit_flag=2
1418 RETURN
1419 END IF
1420# endif
1421 END DO
1422 DO itrc=1,mbedp
1423 IF (.not.have_var(idsbed(itrc)).and. &
1424 & get_var(idsbed(itrc))) THEN
1425 IF (master) WRITE (stdout,10) string, &
1426 & trim(vname(1,idsbed(itrc))), &
1427 & trim(ncname)
1428 exit_flag=2
1429 RETURN
1430 END IF
1431 END DO
1432# endif
1433# if defined SEDIMENT || defined BBL_MODEL
1434
1435
1436
1437
1438 DO itrc=1,4
1439 IF (.not.have_var(idbott(itrc)).and. &
1440 & get_var(idbott(itrc))) THEN
1441 IF (master) WRITE (stdout,10) string, &
1442 & trim(vname(1,idbott(itrc))), &
1443 & trim(ncname)
1444 exit_flag=2
1445 RETURN
1446 END IF
1447 END DO
1448# endif
1449# endif
1450
1451 10 FORMAT (/,a,'CHECKVARS_PIO - unable to find model variable: ',a, &
1452 & /,22x,'in file: ',a)
1453
1454 RETURN
subroutine, public pio_netcdf_check_var(ng, model, ncname, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)