734
735
737
738
739
740 integer, intent(in) :: ng
741
742
743
744 logical :: got_var(NV)
745
746 integer, parameter :: Natt = 25
747
748 integer :: i, j, itrc, nvd3, nvd4
749 integer :: recdim, status
750
751 integer :: DimIDs(nDimID)
752 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
753# ifdef SOLVE3D
754 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
755# endif
756
757 real(r8) :: Aval(6)
758
759 character (len=256) :: ncname
760 character (len=MaxLen) :: Vinfo(Natt)
761
762 character (len=*), parameter :: MyFile = &
763 & __FILE__//", def_dai_pio"
764
765 sourcefile=myfile
766
767
768
769
770
771 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
772 ncname=dai(ng)%name
773
774 IF (master) THEN
775 IF (ldefdai(ng)) THEN
776 WRITE (stdout,10) ng, trim(ncname)
777 ELSE
778 WRITE (stdout,20) ng, trim(ncname)
779 END IF
780 END IF
781
782
783
784
785
786 define : IF (ldefdai(ng)) THEN
788 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
789 IF (master) WRITE (stdout,30) trim(ncname)
790 RETURN
791 END IF
792
793
794
795
796
797 dimids=0
798
799 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'xi_rho', &
800 & iobounds(ng)%xi_rho, dimids( 1))
801 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
802
803 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'xi_u', &
804 & iobounds(ng)%xi_u, dimids( 2))
805 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
806
807 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'xi_v', &
808 & iobounds(ng)%xi_v, dimids( 3))
809 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
810
811 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'xi_psi', &
812 & iobounds(ng)%xi_psi, dimids( 4))
813 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
814
815 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'eta_rho', &
816 & iobounds(ng)%eta_rho, dimids( 5))
817 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
818
819 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'eta_u', &
820 & iobounds(ng)%eta_u, dimids( 6))
821 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
822
823 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'eta_v', &
824 & iobounds(ng)%eta_v, dimids( 7))
825 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
826
827 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'eta_psi', &
828 & iobounds(ng)%eta_psi, dimids( 8))
829 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
830
831# ifdef SOLVE3D
832 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'N', &
833 & n(ng), dimids( 9))
834 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
835
836 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 's_rho', &
837 & n(ng), dimids( 9))
838 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
839
840 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 's_w', &
841 & n(ng)+1, dimids(10))
842 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
843
844 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'tracer', &
845 & nt(ng), dimids(11))
846 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
847
848# ifdef SEDIMENT
849 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'NST', &
850 & nst, dimids(32))
851 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
852
853 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'Nbed', &
854 & nbed, dimids(16))
855 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
856# endif
857# ifdef ECOSIM
858 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'Nbands', &
859 & nbands, dimids(33))
860 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
861
862 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'Nphy', &
863 & nphy, dimids(25))
864 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
865
866 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'Nbac', &
867 & nbac, dimids(26))
868 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
869
870 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'Ndom', &
871 & ndom, dimids(27))
872 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
873
874 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'Nfec', &
875 & nfec, dimids(28))
876 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
877# endif
878# endif
879
880 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'boundary', &
881 & 4, dimids(14))
882 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
883
884# ifdef FOUR_DVAR
885 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, 'Nstate', &
886 & nstatevar(ng), dimids(29))
887 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
888# endif
889
890 status=def_dim(ng, inlm, dai(ng)%pioFile, ncname, &
891 & trim(adjustl(vname(5,idtime))), &
892 & pio_unlimited, dimids(12))
893 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
894
895 recdim=dimids(12)
896
897
898
899 nvd3=3
900 nvd4=4
901
902
903
904 t2dgrd(1)=dimids( 1)
905 t2dgrd(2)=dimids( 5)
906 t2dgrd(3)=dimids(12)
907# ifdef SOLVE3D
908 t3dgrd(1)=dimids( 1)
909 t3dgrd(2)=dimids( 5)
910 t3dgrd(3)=dimids( 9)
911 t3dgrd(4)=dimids(12)
912# endif
913
914
915
916 u2dgrd(1)=dimids( 2)
917 u2dgrd(2)=dimids( 6)
918 u2dgrd(3)=dimids(12)
919# ifdef SOLVE3D
920 u3dgrd(1)=dimids( 2)
921 u3dgrd(2)=dimids( 6)
922 u3dgrd(3)=dimids( 9)
923 u3dgrd(4)=dimids(12)
924# endif
925
926
927
928 v2dgrd(1)=dimids( 3)
929 v2dgrd(2)=dimids( 7)
930 v2dgrd(3)=dimids(12)
931# ifdef SOLVE3D
932 v3dgrd(1)=dimids( 3)
933 v3dgrd(2)=dimids( 7)
934 v3dgrd(3)=dimids( 9)
935 v3dgrd(4)=dimids(12)
936# endif
937# ifdef SOLVE3D
938
939
940
941 w3dgrd(1)=dimids( 1)
942 w3dgrd(2)=dimids( 5)
943 w3dgrd(3)=dimids(10)
944 w3dgrd(4)=dimids(12)
945# endif
946
947
948
949 dai(ng)%Rindex=0
950
951
952
953 DO i=1,natt
954 DO j=1,len(vinfo(1))
955 vinfo(i)(j:j)=' '
956 END DO
957 END DO
958 DO i=1,6
959 aval(i)=0.0_r8
960 END DO
961
962
963
964
965
966 CALL def_info (ng, inlm, dai(ng)%pioFile, ncname, dimids)
967 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
968
969# ifdef SOLVE3D
970
971
972
973 vinfo( 1)=vname(1,idpthr)
974 WRITE (vinfo( 2),40) trim(vname(2,idpthr))
975 vinfo( 3)=vname(3,idpthr)
976 vinfo(11)='downwards'
977 vinfo(22)='coordinates'
978 aval(5)=real(iinfo(1,idpthr,ng),r8)
979 dai(ng)%pioVar(idpthr)%dkind=
pio_frst
980 dai(ng)%pioVar(idpthr)%gtype=r3dvar
981
982 status=def_var(ng, inlm, dai(ng)%pioFile, &
983 & dai(ng)%pioVar(idpthr)%vd, &
984 &
pio_frst, nvd3, t3dgrd, aval, vinfo, ncname, &
985 & setfillval = .false.)
986 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
987
988
989
990 vinfo( 1)=vname(1,idpthu)
991 WRITE (vinfo( 2),40) trim(vname(2,idpthu))
992 vinfo( 3)=vname(3,idpthu)
993 vinfo(11)='downwards'
994 vinfo(22)='coordinates'
995 aval(5)=real(iinfo(1,idpthu,ng),r8)
996 dai(ng)%pioVar(idpthu)%dkind=
pio_frst
997 dai(ng)%pioVar(idpthu)%gtype=u3dvar
998
999 status=def_var(ng, inlm, dai(ng)%pioFile, &
1000 & dai(ng)%pioVar(idpthu)%vd, &
1001 &
pio_frst, nvd3, u3dgrd, aval, vinfo, ncname, &
1002 & setfillval = .false.)
1003 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1004
1005
1006
1007 vinfo( 1)=vname(1,idpthv)
1008 WRITE (vinfo( 2),40) trim(vname(2,idpthv))
1009 vinfo( 3)=vname(3,idpthv)
1010 vinfo(11)='downwards'
1011 vinfo(22)='coordinates'
1012 aval(5)=real(iinfo(1,idpthv,ng),r8)
1013 dai(ng)%pioVar(idpthv)%dkind=
pio_frst
1014 dai(ng)%pioVar(idpthv)%gtype=v3dvar
1015
1016 status=def_var(ng, inlm, dai(ng)%pioFile, &
1017 & dai(ng)%pioVar(idpthv)%vd, &
1018 &
pio_frst, nvd3, v3dgrd, aval, vinfo, ncname, &
1019 & setfillval = .false.)
1020 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1021
1022
1023
1024 vinfo( 1)=vname(1,idpthw)
1025 WRITE (vinfo( 2),40) trim(vname(2,idpthw))
1026 vinfo( 3)=vname(3,idpthw)
1027 vinfo(11)='downwards'
1028 vinfo(22)='coordinates'
1029 aval(5)=real(iinfo(1,idpthw,ng),r8)
1030 dai(ng)%pioVar(idpthw)%dkind=
pio_frst
1031 dai(ng)%pioVar(idpthw)%gtype=w3dvar
1032
1033 status=def_var(ng, inlm, dai(ng)%pioFile, &
1034 & dai(ng)%pioVar(idpthw)%vd, &
1035 &
pio_frst, nvd3, w3dgrd, aval, vinfo, ncname, &
1036 & setfillval = .false.)
1037 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1038# endif
1039
1040
1041
1042
1043
1044
1045
1046 vinfo( 1)=vname(1,idtime)
1047 vinfo( 2)=vname(2,idtime)
1048 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
1049 vinfo( 4)=trim(rclock%calendar)
1050 vinfo(14)=vname(4,idtime)
1051 vinfo(21)=vname(6,idtime)
1052 dai(ng)%pioVar(idtime)%dkind=
pio_tout
1053 dai(ng)%pioVar(idtime)%gtype=0
1054
1055 status=def_var(ng, inlm, dai(ng)%pioFile, &
1056 & dai(ng)%pioVar(idtime)%vd, &
1057 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1058 & setparaccess = .true.)
1059 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1060
1061
1062
1063 vinfo( 1)=vname(1,idfsur)
1064 vinfo( 2)=vname(2,idfsur)
1065 vinfo( 3)=vname(3,idfsur)
1066 vinfo(14)=vname(4,idfsur)
1067 vinfo(16)=vname(1,idtime)
1068 vinfo(21)=vname(6,idfsur)
1069 vinfo(22)='coordinates'
1070 aval(5)=real(iinfo(1,idfsur,ng),r8)
1071 dai(ng)%pioVar(idfsur)%dkind=
pio_frst
1072 dai(ng)%pioVar(idfsur)%gtype=r2dvar
1073
1074 status=def_var(ng, inlm, dai(ng)%pioFile, &
1075 & dai(ng)%pioVar(idfsur)%vd, &
1076# ifdef WET_DRY
1077 &
pio_frst, nvd3, t2dgrd, aval, vinfo, ncname, &
1078 & setfillval = .false.)
1079# else
1080 &
pio_frst, nvd3, t2dgrd, aval, vinfo, ncname)
1081
1082# endif
1083 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1084
1085
1086
1087 vinfo( 1)=vname(1,idubar)
1088 vinfo( 2)=vname(2,idubar)
1089 vinfo( 3)=vname(3,idubar)
1090 vinfo(14)=vname(4,idubar)
1091 vinfo(16)=vname(1,idtime)
1092 vinfo(21)=vname(6,idubar)
1093 vinfo(22)='coordinates'
1094 aval(5)=real(iinfo(1,idubar,ng),r8)
1095 dai(ng)%pioVar(idubar)%dkind=
pio_frst
1096 dai(ng)%pioVar(idubar)%gtype=u2dvar
1097
1098 status=def_var(ng, inlm, dai(ng)%pioFile, &
1099 & dai(ng)%pioVar(idubar)%vd, &
1100 &
pio_frst, nvd3, u2dgrd, aval, vinfo, ncname)
1101 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1102
1103
1104
1105 vinfo( 1)=vname(1,idvbar)
1106 vinfo( 2)=vname(2,idvbar)
1107 vinfo( 3)=vname(3,idvbar)
1108 vinfo(14)=vname(4,idvbar)
1109 vinfo(16)=vname(1,idtime)
1110 vinfo(21)=vname(6,idvbar)
1111 vinfo(22)='coordinates'
1112 aval(5)=real(iinfo(1,idvbar,ng),r8)
1113 dai(ng)%pioVar(idvbar)%dkind=
pio_frst
1114 dai(ng)%pioVar(idvbar)%gtype=v2dvar
1115
1116 status=def_var(ng, inlm, dai(ng)%pioFile, &
1117 & dai(ng)%pioVar(idvbar)%vd, &
1118 &
pio_frst, nvd3, v2dgrd, aval, vinfo, ncname)
1119 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1120
1121# ifdef SOLVE3D
1122
1123
1124
1125 vinfo( 1)=vname(1,iduvel)
1126 vinfo( 2)=vname(2,iduvel)
1127 vinfo( 3)=vname(3,iduvel)
1128 vinfo(14)=vname(4,iduvel)
1129 vinfo(16)=vname(1,idtime)
1130 vinfo(21)=vname(6,iduvel)
1131 vinfo(22)='coordinates'
1132 aval(5)=real(iinfo(1,iduvel,ng),r8)
1133 dai(ng)%pioVar(iduvel)%dkind=
pio_frst
1134 dai(ng)%pioVar(iduvel)%gtype=u3dvar
1135
1136 status=def_var(ng, inlm, dai(ng)%pioFile, &
1137 & dai(ng)%pioVar(iduvel)%vd, &
1138 &
pio_frst, nvd4, u3dgrd, aval, vinfo, ncname)
1139 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1140
1141
1142
1143 vinfo( 1)=vname(1,idvvel)
1144 vinfo( 2)=vname(2,idvvel)
1145 vinfo( 3)=vname(3,idvvel)
1146 vinfo(14)=vname(4,idvvel)
1147 vinfo(16)=vname(1,idtime)
1148 vinfo(21)=vname(6,idvvel)
1149 vinfo(22)='coordinates'
1150 aval(5)=real(iinfo(1,idvvel,ng),r8)
1151 dai(ng)%pioVar(idvvel)%dkind=
pio_frst
1152 dai(ng)%pioVar(idvvel)%gtype=v3dvar
1153
1154 status=def_var(ng, inlm, dai(ng)%pioFile, &
1155 & dai(ng)%pioVar(idvvel)%vd, &
1156 &
pio_frst, nvd4, v3dgrd, aval, vinfo, ncname)
1157 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1158
1159
1160
1161 DO itrc=1,nt(ng)
1162 vinfo( 1)=vname(1,idtvar(itrc))
1163 vinfo( 2)=vname(2,idtvar(itrc))
1164 vinfo( 3)=vname(3,idtvar(itrc))
1165 vinfo(14)=vname(4,idtvar(itrc))
1166 vinfo(16)=vname(1,idtime)
1167# ifdef SEDIMENT
1168 DO i=1,nst
1169 IF (itrc.eq.idsed(i)) THEN
1170 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
1171 END IF
1172 END DO
1173# endif
1174 vinfo(21)=vname(6,idtvar(itrc))
1175 vinfo(22)='coordinates'
1176 aval(5)=real(r3dvar,r8)
1177 dai(ng)%pioTrc(itrc)%dkind=
pio_frst
1178 dai(ng)%pioTrc(itrc)%gtype=r3dvar
1179
1180 status=def_var(ng, inlm, dai(ng)%pioFile, &
1181 & dai(ng)%pioTrc(itrc)%vd, &
1182 &
pio_frst, nvd4, t3dgrd, aval, vinfo, ncname)
1183 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1184 END DO
1185
1186
1187
1188 vinfo( 1)=vname(1,idvvis)
1189 vinfo( 2)=vname(2,idvvis)
1190 vinfo( 3)=vname(3,idvvis)
1191 vinfo(14)=vname(4,idvvis)
1192 vinfo(16)=vname(1,idtime)
1193 vinfo(21)=vname(6,idvvis)
1194 vinfo(22)='coordinates'
1195 aval(5)=real(iinfo(1,idvvis,ng),r8)
1196 dai(ng)%pioVar(idvvis)%dkind=
pio_frst
1197 dai(ng)%pioVar(idvvis)%gtype=w3dvar
1198
1199 status=def_var(ng, inlm, dai(ng)%pioFile, &
1200 & dai(ng)%pioVar(idvvis)%vd, &
1201 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
1202 & setfillval = .false.)
1203 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1204
1205
1206
1207 vinfo( 1)=vname(1,idtdif)
1208 vinfo( 2)=vname(2,idtdif)
1209 vinfo( 3)=vname(3,idtdif)
1210 vinfo(14)=vname(4,idtdif)
1211 vinfo(16)=vname(1,idtime)
1212 vinfo(21)=vname(6,idtdif)
1213 vinfo(22)='coordinates'
1214 aval(5)=real(iinfo(1,idtdif,ng),r8)
1215 dai(ng)%pioVar(idtdif)%dkind=
pio_frst
1216 dai(ng)%pioVar(idtdif)%gtype=w3dvar
1217
1218 status=def_var(ng, inlm, dai(ng)%pioFile, &
1219 & dai(ng)%pioVar(idtdif)%vd, &
1220 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
1221 & setfillval = .false.)
1222 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1223
1224# ifdef SALINITY
1225
1226
1227
1228 vinfo( 1)=vname(1,idsdif)
1229 vinfo( 2)=vname(2,idsdif)
1230 vinfo( 3)=vname(3,idsdif)
1231 vinfo(14)=vname(4,idsdif)
1232 vinfo(16)=vname(1,idtime)
1233 vinfo(21)=vname(6,idsdif)
1234 vinfo(22)='coordinates'
1235 aval(5)=real(iinfo(1,idsdif,ng),r8)
1236 dai(ng)%pioVar(idsdif)%dkind=
pio_frst
1237 dai(ng)%pioVar(idsdif)%gtype=w3dvar
1238
1239 status=def_var(ng, inlm, dai(ng)%pioFile, &
1240 & dai(ng)%pioVar(idsdif)%vd, &
1241 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
1242 & setfillval = .false.)
1243 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1244# endif
1245# endif
1246
1247
1248
1249
1250
1252 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1253
1254
1255
1256
1257
1258 CALL wrt_info (ng, inlm, dai(ng)%pioFile, ncname)
1259 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1260
1261 END IF define
1262
1263
1264
1265
1266
1267
1268 query : IF (.not.ldefdai(ng)) THEN
1269 ncname=dai(ng)%name
1270
1271
1272
1274 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1275 WRITE (stdout,60) trim(ncname)
1276 RETURN
1277 END IF
1278
1279
1280
1282 & piofile = dai(ng)%pioFile)
1283 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1284
1285
1286
1288 & piofile= dai(ng)%pioFile)
1289 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1290
1291
1292
1293 DO i=1,nv
1294 got_var(i)=.false.
1295 END DO
1296
1297
1298
1299
1300 DO i=1,n_var
1301 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
1302 got_var(idtime)=.true.
1303 dai(ng)%pioVar(idtime)%vd=
var_desc(i)
1304 dai(ng)%pioVar(idtime)%dkind=
pio_tout
1305 dai(ng)%pioVar(idtime)%gtype=0
1306 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
1307 got_var(idfsur)=.true.
1308 dai(ng)%pioVar(idfsur)%vd=
var_desc(i)
1309 dai(ng)%pioVar(idfsur)%dkind=
pio_frst
1310 dai(ng)%pioVar(idfsur)%gtype=r2dvar
1311 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
1312 got_var(idubar)=.true.
1313 dai(ng)%pioVar(idubar)%vd=
var_desc(i)
1314 dai(ng)%pioVar(idubar)%dkind=
pio_frst
1315 dai(ng)%pioVar(idubar)%gtype=u2dvar
1316 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
1317 got_var(idvbar)=.true.
1318 dai(ng)%pioVar(idvbar)%vd=
var_desc(i)
1319 dai(ng)%pioVar(idvbar)%dkind=
pio_frst
1320 dai(ng)%pioVar(idvbar)%gtype=v2dvar
1321# ifdef SOLVE3D
1322 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
1323 got_var(iduvel)=.true.
1324 dai(ng)%pioVar(iduvel)%vd=
var_desc(i)
1325 dai(ng)%pioVar(iduvel)%dkind=
pio_frst
1326 dai(ng)%pioVar(iduvel)%gtype=u3dvar
1327 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
1328 got_var(idvvel)=.true.
1329 dai(ng)%pioVar(idvvel)%vd=
var_desc(i)
1330 dai(ng)%pioVar(idvvel)%dkind=
pio_frst
1331 dai(ng)%pioVar(idvvel)%gtype=v3dvar
1332 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
1333 got_var(idvvis)=.true.
1334 dai(ng)%pioVar(idvvis)%vd=
var_desc(i)
1335 dai(ng)%pioVar(idvvis)%dkind=
pio_frst
1336 dai(ng)%pioVar(idvvis)%gtype=w3dvar
1337 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
1338 got_var(idtdif)=.true.
1339 dai(ng)%pioVar(idtdif)%vd=
var_desc(i)
1340 dai(ng)%pioVar(idtdif)%dkind=
pio_frst
1341 dai(ng)%pioVar(idtdif)%gtype=w3dvar
1342 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
1343 got_var(idsdif)=.true.
1344 dai(ng)%pioVar(idsdif)%vd=
var_desc(i)
1345 dai(ng)%pioVar(idsdif)%dkind=
pio_frst
1346 dai(ng)%pioVar(idsdif)%gtype=w3dvar
1347# endif
1348 END IF
1349# ifdef SOLVE3D
1350 DO itrc=1,nt(ng)
1351 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
1352 got_var(idtvar(itrc))=.true.
1353 dai(ng)%pioTrc(itrc)%vd=
var_desc(i)
1354 dai(ng)%pioTrc(itrc)%dkind=
pio_frst
1355 dai(ng)%pioTrc(itrc)%gtype=r3dvar
1356 END IF
1357 END DO
1358# endif
1359 END DO
1360
1361
1362
1363
1364 IF (.not.got_var(idtime)) THEN
1365 IF (master) WRITE (stdout,70) trim(vname(1,idtime)), &
1366 & trim(ncname)
1367 exit_flag=3
1368 RETURN
1369 END IF
1370 IF (.not.got_var(idfsur)) THEN
1371 IF (master) WRITE (stdout,70) trim(vname(1,idfsur)), &
1372 & trim(ncname)
1373 exit_flag=3
1374 RETURN
1375 END IF
1376 IF (.not.got_var(idubar)) THEN
1377 IF (master) WRITE (stdout,70) trim(vname(1,idubar)), &
1378 & trim(ncname)
1379 exit_flag=3
1380 RETURN
1381 END IF
1382 IF (.not.got_var(idvbar)) THEN
1383 IF (master) WRITE (stdout,70) trim(vname(1,idvbar)), &
1384 & trim(ncname)
1385 exit_flag=3
1386 RETURN
1387 END IF
1388# ifdef SOLVE3D
1389 IF (.not.got_var(iduvel)) THEN
1390 IF (master) WRITE (stdout,70) trim(vname(1,iduvel)), &
1391 & trim(ncname)
1392 exit_flag=3
1393 RETURN
1394 END IF
1395 IF (.not.got_var(idvvel)) THEN
1396 IF (master) WRITE (stdout,70) trim(vname(1,idvvel)), &
1397 & trim(ncname)
1398 exit_flag=3
1399 RETURN
1400 END IF
1401 DO itrc=1,nt(ng)
1402 IF (.not.got_var(idtvar(itrc))) THEN
1403 IF (master) WRITE (stdout,70) trim(vname(1,idtvar(itrc))), &
1404 & trim(ncname)
1405 exit_flag=3
1406 RETURN
1407 END IF
1408 END DO
1409 IF (.not.got_var(idvvis)) THEN
1410 IF (master) WRITE (stdout,70) trim(vname(1,idvvis)), &
1411 & trim(ncname)
1412 exit_flag=3
1413 RETURN
1414 END IF
1415 IF (.not.got_var(idtdif)) THEN
1416 IF (master) WRITE (stdout,70) trim(vname(1,idtdif)), &
1417 & trim(ncname)
1418 exit_flag=3
1419 RETURN
1420 END IF
1421# ifdef SALINITY
1422 IF (.not.got_var(idsdif)) THEN
1423 IF (master) WRITE (stdout,70) trim(vname(1,idsdif)), &
1424 & trim(ncname)
1425 exit_flag=3
1426 RETURN
1427 END IF
1428# endif
1429# endif
1430
1431
1432
1433 dai(ng)%Rindex=rec_size
1434 END IF query
1435
1436 10 FORMAT (/,2x,'DEF_DAI_PIO - creating DA INI/RST file,',t56, &
1437 & 'Grid ',i2.2,': ',a)
1438 20 FORMAT (/,2x,'DEF_DAI_PIO - inquiring DA INI/RST file,',t56, &
1439 & 'Grid ',i2.2,': ',a)
1440 30 FORMAT (/,' DEF_DAI_PIO - unable to create DA initial/restart', &
1441 & ' NetCDF file: ',a)
1442 40 FORMAT ('time independent',1x,a)
1443 50 FORMAT (1pe11.4,1x,'millimeter')
1444 60 FORMAT (/,' DEF_DAI_PIO - unable to open DA initial/restart' &
1445 & ' NetCDF file: ',a)
1446 70 FORMAT (/,' DEF_DAI_PIO - unable to find variable: ',a,2x, &
1447 & ' in DA initial/restart NetCDF file: ',a)
1448
1449 RETURN
type(var_desc_t), dimension(:), pointer var_desc
integer, parameter pio_frst
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)