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