832
833
834
835
836
837
838
839
842
843#ifdef SUBOBJECT_DEALLOCATION
844
846#endif
847
848
849
850 integer, intent(in) :: ng
851
852
853
854 character (len=*), parameter :: MyFile = &
855 & __FILE__//", deallocate_mixing"
856
857#ifdef SUBOBJECT_DEALLOCATION
858
859
860
861
862
863
864
865
866# ifndef ANA_SPONGE
868 IF (.not.
destroy(ng, mixing(ng)%visc_factor, myfile, &
869 & __line__, 'MIXING(ng)%visc_factor')) RETURN
870 END IF
871# endif
872
873# if defined UV_VIS2
874 IF (.not.
destroy(ng, mixing(ng)%visc2_p, myfile, &
875 & __line__, 'MIXING(ng)%visc2_p')) RETURN
876
877 IF (.not.
destroy(ng, mixing(ng)%visc2_r, myfile, &
878 & __line__, 'MIXING(ng)%visc2_r')) RETURN
879# endif
880
881# ifdef UV_VIS4
882 IF (.not.
destroy(ng, mixing(ng)%visc4_p, myfile, &
883 & __line__, 'MIXING(ng)%visc4_p')) RETURN
884
885 IF (.not.
destroy(ng, mixing(ng)%visc4_r, myfile, &
886 & __line__, 'MIXING(ng)%visc4_r')) RETURN
887# endif
888
889# ifdef VISC_3DCOEF
890 IF (.not.
destroy(ng, mixing(ng)%Hviscosity, myfile, &
891 & __line__, 'MIXING(ng)%Hviscosity')) RETURN
892
893# ifdef UV_U3ADV_SPLIT
894 IF (.not.
destroy(ng, mixing(ng)%Uvis3d_r, myfile, &
895 & __line__, 'MIXING(ng)%Uvis3d_r')) RETURN
896
897 IF (.not.
destroy(ng, mixing(ng)%Vvis3d_r, myfile, &
898 & __line__, 'MIXING(ng)%Vvis3d_r')) RETURN
899# else
900 IF (.not.
destroy(ng, mixing(ng)%visc3d_r, myfile, &
901 & __line__, 'MIXING(ng)%visc3d_r')) RETURN
902# endif
903# endif
904
905# ifdef WEC
906 IF (.not.
destroy(ng, mixing(ng)%rustr2d, myfile, &
907 & __line__, 'MIXING(ng)%rustr2d')) RETURN
908
909 IF (.not.
destroy(ng, mixing(ng)%rvstr2d, myfile, &
910 & __line__, 'MIXING(ng)%rvstr2d')) RETURN
911# endif
912# ifdef WEC_VF
913 IF (.not.
destroy(ng, mixing(ng)%rurol2d, myfile, &
914 & __line__, 'MIXING(ng)%rurol2d')) RETURN
915
916 IF (.not.
destroy(ng, mixing(ng)%rvrol2d, myfile, &
917 & __line__, 'MIXING(ng)%rvrol2d')) RETURN
918
919 IF (.not.
destroy(ng, mixing(ng)%rubrk2d, myfile, &
920 & __line__, 'MIXING(ng)%rubrk2d')) RETURN
921
922 IF (.not.
destroy(ng, mixing(ng)%rvbrk2d, myfile, &
923 & __line__, 'MIXING(ng)%rvbrk2d')) RETURN
924
925 IF (.not.
destroy(ng, mixing(ng)%rukvf2d, myfile, &
926 & __line__, 'MIXING(ng)%rukvf2d')) RETURN
927
928 IF (.not.
destroy(ng, mixing(ng)%rvkvf2d, myfile, &
929 & __line__, 'MIXING(ng)%rvkvf2d')) RETURN
930
931# ifdef BOTTOM_STREAMING
932 IF (.not.
destroy(ng, mixing(ng)%rubst2d, myfile, &
933 & __line__, 'MIXING(ng)%rubst2d')) RETURN
934
935 IF (.not.
destroy(ng, mixing(ng)%rvbst2d, myfile, &
936 & __line__, 'MIXING(ng)%rvbst2d')) RETURN
937# endif
938# ifdef SURFACE_STREAMING
939 IF (.not.
destroy(ng, mixing(ng)%russt2d, myfile, &
940 & __line__, 'MIXING(ng)%russt2d')) RETURN
941
942 IF (.not.
destroy(ng, mixing(ng)%rvsst2d, myfile, &
943 & __line__, 'MIXING(ng)%rvsst2d')) RETURN
944# endif
945# endif
946
947# ifdef SOLVE3D
948# ifdef WEC_VF
949 IF (.not.
destroy(ng, mixing(ng)%rustr3d, myfile, &
950 & __line__, 'MIXING(ng)%rustr3d')) RETURN
951
952 IF (.not.
destroy(ng, mixing(ng)%rvstr3d, myfile, &
953 & __line__, 'MIXING(ng)%rvstr3d')) RETURN
954# endif
955# endif
956
957# ifdef SOLVE3D
958# ifndef ANA_SPONGE
960 IF (.not.
destroy(ng, mixing(ng)%diff_factor, myfile, &
961 & __line__, 'MIXING(ng)%diff_factor')) RETURN
962 END IF
963# endif
964
965# ifdef TS_DIF2
966 IF (.not.
destroy(ng, mixing(ng)%diff2, myfile, &
967 & __line__, 'MIXING(ng)%diff2')) RETURN
968# endif
969
970# ifdef TS_DIF4
971 IF (.not.
destroy(ng, mixing(ng)%diff4, myfile, &
972 & __line__, 'MIXING(ng)%diff4')) RETURN
973# endif
974
975# ifdef DIFF_3DCOEF
976 IF (.not.
destroy(ng, mixing(ng)%Hdiffusion, myfile, &
977 & __line__, 'MIXING(ng)%Hdiffusion')) RETURN
978
979# ifdef TS_U3ADV_SPLIT
980 IF (.not.
destroy(ng, mixing(ng)%diff3d_u, myfile, &
981 & __line__, 'MIXING(ng)%diff3d_u')) RETURN
982
983 IF (.not.
destroy(ng, mixing(ng)%diff3d_v, myfile, &
984 & __line__, 'MIXING(ng)%diff3d_v')) RETURN
985# else
986 IF (.not.
destroy(ng, mixing(ng)%diff3d_r, myfile, &
987 & __line__, 'MIXING(ng)%diff3d_r')) RETURN
988# endif
989# endif
990
991 IF (.not.
destroy(ng, mixing(ng)%Akv, myfile, &
992 & __line__, 'MIXING(ng)%Akv')) RETURN
993
994 IF (.not.
destroy(ng, mixing(ng)%Akt, myfile, &
995 & __line__, 'MIXING(ng)%Akt')) RETURN
996
997# ifdef FLOAT_VWALK
998 IF (.not.
destroy(ng, mixing(ng)%dAktdz, myfile, &
999 & __line__, 'MIXING(ng)%dAktdz')) RETURN
1000# endif
1001
1002# if defined LMD_SKPP || defined LMD_BKPP || \
1003 defined bulk_fluxes || defined balance_operator
1004 IF (.not.
destroy(ng, mixing(ng)%alpha, myfile, &
1005 & __line__, 'MIXING(ng)%alpha')) RETURN
1006
1007 IF (.not.
destroy(ng, mixing(ng)%beta, myfile, &
1008 & __line__, 'MIXING(ng)%beta')) RETURN
1009# endif
1010
1011# ifdef BV_FREQUENCY
1012 IF (.not.
destroy(ng, mixing(ng)%bvf, myfile, &
1013 & __line__, 'MIXING(ng)%bvf')) RETURN
1014# endif
1015
1016# if defined GLS_MIXING || defined MY25_MIXING
1017 IF (.not.
destroy(ng, mixing(ng)%tke, myfile, &
1018 & __line__, 'MIXING(ng)%tke')) RETURN
1019
1020 IF (.not.
destroy(ng, mixing(ng)%gls, myfile, &
1021 & __line__, 'MIXING(ng)%gls')) RETURN
1022
1023 IF (.not.
destroy(ng, mixing(ng)%Lscale, myfile, &
1024 & __line__, 'MIXING(ng)%Lscale')) RETURN
1025
1026 IF (.not.
destroy(ng, mixing(ng)%Akk, myfile, &
1027 & __line__, 'MIXING(ng)%Akk')) RETURN
1028
1029# ifdef GLS_MIXING
1030 IF (.not.
destroy(ng, mixing(ng)%Akp, myfile, &
1031 & __line__, 'MIXING(ng)%Akp')) RETURN
1032# endif
1033# endif
1034
1035# if defined LMD_MIXING && defined LMD_DDMIX
1036 IF (.not.
destroy(ng, mixing(ng)%alfaobeta, myfile, &
1037 & __line__, 'MIXING(ng)%alfaobeta')) RETURN
1038# endif
1039
1040# if defined LMD_SKPP || defined SOLAR_SOURCE
1041 IF (.not.
destroy(ng, mixing(ng)%Jwtype, myfile, &
1042 & __line__, 'MIXING(ng)%Jwtype')) RETURN
1043# endif
1044
1045# if defined LMD_SKPP || defined LMD_BKPP
1046 IF (.not.
destroy(ng, mixing(ng)%ksbl, myfile, &
1047 & __line__, 'MIXING(ng)%ksbl')) RETURN
1048
1049 IF (.not.
destroy(ng, mixing(ng)%hsbl, myfile, &
1050 & __line__, 'MIXING(ng)%hsbl')) RETURN
1051
1052# ifdef LMD_BKPP
1053 IF (.not.
destroy(ng, mixing(ng)%kbbl, myfile, &
1054 & __line__, 'MIXING(ng)%kbbl')) RETURN
1055
1056 IF (.not.
destroy(ng, mixing(ng)%hbbl, myfile, &
1057 & __line__, 'MIXING(ng)%hbbl')) RETURN
1058# endif
1059
1060# ifdef LMD_NONLOCAL
1061 IF (.not.
destroy(ng, mixing(ng)%ghats, myfile, &
1062 & __line__, 'MIXING(ng)%ghats')) RETURN
1063# endif
1064
1065# endif
1066# endif
1067
1068# ifdef FOUR_DVAR
1069
1070
1071
1072 IF (.not.
destroy(ng, mixing(ng)%Kh, myfile, &
1073 & __line__, 'MIXING(ng)%Kh')) RETURN
1074
1075# ifdef SOLVE3D
1076 IF (.not.
destroy(ng, mixing(ng)%Kv, myfile, &
1077 & __line__, 'MIXING(ng)%Kv')) RETURN
1078# endif
1079# endif
1080
1081# if defined TANGENT || defined TL_IOMS
1082
1083
1084
1085# ifdef SOLVE3D
1086# ifdef DIFF_3DCOEF
1087# ifdef TS_U3ADV_SPLIT
1088 IF (.not.
destroy(ng, mixing(ng)%tl_diff3d_u, myfile, &
1089 & __line__, 'MIXING(ng)%tl_diff3d_u')) RETURN
1090
1091 IF (.not.
destroy(ng, mixing(ng)%tl_diff3d_v, myfile, &
1092 & __line__, 'MIXING(ng)%tl_diff3d_v')) RETURN
1093# else
1094 IF (.not.
destroy(ng, mixing(ng)%tl_diff3d_r, myfile, &
1095 & __line__, 'MIXING(ng)%tl_diff3d_r')) RETURN
1096# endif
1097# endif
1098
1099# ifdef VISC_3DCOEF
1100# ifdef UV_U3ADV_SPLIT
1101 IF (.not.
destroy(ng, mixing(ng)%tl_Uvis3d_r, myfile, &
1102 & __line__, 'MIXING(ng)%tl_Uvis3d_r')) RETURN
1103
1104 IF (.not.
destroy(ng, mixing(ng)%tl_Vvis3d_r, myfile, &
1105 & __line__, 'MIXING(ng)%tl_Vvis3d_r')) RETURN
1106# else
1107 IF (.not.
destroy(ng, mixing(ng)%tl_visc3d_r, myfile, &
1108 & __line__, 'MIXING(ng)%tl_visc3d_r')) RETURN
1109# endif
1110# endif
1111
1112 IF (.not.
destroy(ng, mixing(ng)%tl_Akv, myfile, &
1113 & __line__, 'MIXING(ng)%tl_Akv')) RETURN
1114
1115 IF (.not.
destroy(ng, mixing(ng)%tl_Akt, myfile, &
1116 & __line__, 'MIXING(ng)%tl_Akt')) RETURN
1117
1118# if defined LMD_SKPP || defined LMD_BKPP || defined BULK_FLUXES
1119 IF (.not.
destroy(ng, mixing(ng)%tl_alpha, myfile, &
1120 & __line__, 'MIXING(ng)%tl_alpha')) RETURN
1121
1122 IF (.not.
destroy(ng, mixing(ng)%tl_beta, myfile, &
1123 & __line__, 'MIXING(ng)%tl_beta')) RETURN
1124# endif
1125
1126# ifdef BV_FREQUENCY
1127 IF (.not.
destroy(ng, mixing(ng)%tl_bvf, myfile, &
1128 & __line__, 'MIXING(ng)%tl_bvf')) RETURN
1129# endif
1130
1131# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1132 IF (.not.
destroy(ng, mixing(ng)%tl_tke, myfile, &
1133 & __line__, 'MIXING(ng)%tl_tke')) RETURN
1134
1135 IF (.not.
destroy(ng, mixing(ng)%tl_gls, myfile, &
1136 & __line__, 'MIXING(ng)%tl_gls')) RETURN
1137
1138 IF (.not.
destroy(ng, mixing(ng)%tl_Lscale, myfile, &
1139 & __line__, 'MIXING(ng)%tl_Lscale')) RETURN
1140
1141 IF (.not.
destroy(ng, mixing(ng)%tl_Akk, myfile, &
1142 & __line__, 'MIXING(ng)%tl_Akk')) RETURN
1143# endif
1144
1145# ifdef GLS_MIXING_NOT_YET
1146 IF (.not.
destroy(ng, mixing(ng)%tl_Akp, myfile, &
1147 & __line__, 'MIXING(ng)%tl_Akp')) RETURN
1148# endif
1149# endif
1150# endif
1151
1152# ifdef ADJOINT
1153
1154
1155
1156# ifdef SOLVE3D
1157# ifdef DIFF_3DCOEF
1158# ifdef TS_U3ADV_SPLIT
1159 IF (.not.
destroy(ng, mixing(ng)%ad_diff3d_u, myfile, &
1160 & __line__, 'MIXING(ng)%ad_diff3d_u')) RETURN
1161
1162 IF (.not.
destroy(ng, mixing(ng)%ad_diff3d_v, myfile, &
1163 & __line__, 'MIXING(ng)%ad_diff3d_v')) RETURN
1164# else
1165 IF (.not.
destroy(ng, mixing(ng)%ad_diff3d_r, myfile, &
1166 & __line__, 'MIXING(ng)%ad_diff3d_r')) RETURN
1167# endif
1168# endif
1169
1170# ifdef VISC_3DCOEF
1171# ifdef UV_U3ADV_SPLIT
1172 IF (.not.
destroy(ng, mixing(ng)%ad_Uvis3d_r, myfile, &
1173 & __line__, 'MIXING(ng)%ad_Uvis3d_r')) RETURN
1174
1175 IF (.not.
destroy(ng, mixing(ng)%ad_Vvis3d_r, myfile, &
1176 & __line__, 'MIXING(ng)%ad_Vvis3d_r')) RETURN
1177# else
1178 IF (.not.
destroy(ng, mixing(ng)%ad_visc3d_r, myfile, &
1179 & __line__, 'MIXING(ng)%ad_visc3d_r')) RETURN
1180# endif
1181# endif
1182
1183 IF (.not.
destroy(ng, mixing(ng)%ad_Akv, myfile, &
1184 & __line__, 'MIXING(ng)%ad_Akv')) RETURN
1185
1186 IF (.not.
destroy(ng, mixing(ng)%ad_Akt, myfile, &
1187 & __line__, 'MIXING(ng)%ad_Akt')) RETURN
1188
1189# if defined LMD_SKPP || defined LMD_BKPP || defined BULK_FLUXES
1190 IF (.not.
destroy(ng, mixing(ng)%ad_alpha, myfile, &
1191 & __line__, 'MIXING(ng)%ad_alpha')) RETURN
1192
1193 IF (.not.
destroy(ng, mixing(ng)%ad_beta, myfile, &
1194 & __line__, 'MIXING(ng)%ad_beta')) RETURN
1195# endif
1196
1197# ifdef BV_FREQUENCY
1198 IF (.not.
destroy(ng, mixing(ng)%ad_bvf, myfile, &
1199 & __line__, 'MIXING(ng)%ad_bvf')) RETURN
1200# endif
1201
1202# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1203 IF (.not.
destroy(ng, mixing(ng)%ad_tke, myfile, &
1204 & __line__, 'MIXING(ng)%ad_tke')) RETURN
1205
1206 IF (.not.
destroy(ng, mixing(ng)%ad_gls, myfile, &
1207 & __line__, 'MIXING(ng)%ad_gls')) RETURN
1208
1209 IF (.not.
destroy(ng, mixing(ng)%ad_Lscale, myfile, &
1210 & __line__, 'MIXING(ng)%ad_Lscale')) RETURN
1211
1212 IF (.not.
destroy(ng, mixing(ng)%ad_Akk, myfile, &
1213 & __line__, 'MIXING(ng)%ad_Akk')) RETURN
1214# endif
1215
1216# ifdef GLS_MIXING_NOT_YET
1217 IF (.not.
destroy(ng, mixing(ng)%ad_Akp, myfile, &
1218 & __line__, 'MIXING(ng)%ad_Akp')) RETURN
1219# endif
1220# endif
1221# endif
1222
1223# if defined FORWARD_READ && \
1224 (defined tangent || defined tl_ioms || defined adjoint)
1225# ifdef FORWARD_MIXING
1226
1227
1228
1229
1230 IF (.not.
destroy(ng, mixing(ng)%AkvG, myfile, &
1231 & __line__, 'MIXING(ng)%AkvG')) RETURN
1232
1233 IF (.not.
destroy(ng, mixing(ng)%AktG, myfile, &
1234 & __line__, 'MIXING(ng)%AktG')) RETURN
1235# endif
1236
1237# if defined LMD_MIXING_NOT_YET
1238 IF (.not.
destroy(ng, mixing(ng)%hsblG, myfile, &
1239 & __line__, 'MIXING(ng)%hsblG')) RETURN
1240# endif
1241
1242# if defined LMD_BKPP_NOT_YET
1243 IF (.not.
destroy(ng, mixing(ng)%hbblG, myfile, &
1244 & __line__, 'MIXING(ng)%hbblG')) RETURN
1245# endif
1246
1247# if defined LMD_NONLOCAL_NOT_YET
1248 IF (.not.
destroy(ng, mixing(ng)%ghatsG, myfile, &
1249 & __line__, 'MIXING(ng)%ghatsG')) RETURN
1250# endif
1251
1252# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1253 IF (.not.
destroy(ng, mixing(ng)%tkeG, myfile, &
1254 & __line__, 'MIXING(ng)%tkeG')) RETURN
1255
1256 IF (.not.
destroy(ng, mixing(ng)%glsG, myfile, &
1257 & __line__, 'MIXING(ng)%glsG')) RETURN
1258
1259 IF (.not.
destroy(ng, mixing(ng)%LscaleG, myfile, &
1260 & __line__, 'MIXING(ng)%LscaleG')) RETURN
1261
1262 IF (.not.
destroy(ng, mixing(ng)%AkkG, myfile, &
1263 & __line__, 'MIXING(ng)%AkkG')) RETURN
1264
1265# ifdef GLS_MIXING_NOT_YET
1266 IF (.not.
destroy(ng, mixing(ng)%AkpG, myfile, &
1267 & __line__, 'MIXING(ng)%AkpG')) RETURN
1268# endif
1269# endif
1270# endif
1271#endif
1272
1273
1274
1275
1276
1278 IF (allocated(mixing)) deallocate ( mixing )
1279 END IF
1280
1281 RETURN