Changeset 15590
- Timestamp:
- 2021-12-10T09:35:28+01:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/DIA/diaharm_fast.F90
r15589 r15590 379 379 ln_diaharm_store = .TRUE. 380 380 381 ln_diaharm_postproc_vel = .FALSE. 382 381 383 IF(lwp) WRITE(numout,*) 382 384 IF(lwp) WRITE(numout,*) 'harm_init : initialization of harmonic analysis of tides' … … 763 765 764 766 765 IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN766 ALLOCATE( amp_u2d(jh,jpi,jpj),amp_v2d(jh,jpi,jpj),phi_u2d(jh,jpi,jpj),phi_v2d(jh,jpi,jpj) )767 768 769 ALLOCATE(tmp_u_amp_mat(jpi,jpj),tmp_v_amp_mat(jpi,jpj),tmp_u_phi_mat(jpi,jpj),tmp_v_phi_mat(jpi,jpj))770 ! ALLOCATE(a_u_mat(jpi,jpj),b_u_mat(jpi,jpj),a_v_mat(jpi,jpj),b_v_mat(jpi,jpj))771 ! ALLOCATE(qmax_mat(jpi,jpj),qmin_mat(jpi,jpj),ecc_mat(jpi,jpj))772 ! ALLOCATE(thetamax_mat(jpi,jpj),thetamin_mat(jpi,jpj),Qc_mat(jpi,jpj),Qac_mat(jpi,jpj))773 ! ALLOCATE(gc_mat(jpi,jpj),gac_mat(jpi,jpj),Phi_Ua_mat(jpi,jpj),dir_Ua_mat(jpi,jpj),polarity_mat(jpi,jpj))774 775 endif767 ! IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN 768 ! ALLOCATE( amp_u2d(jh,jpi,jpj),amp_v2d(jh,jpi,jpj),phi_u2d(jh,jpi,jpj),phi_v2d(jh,jpi,jpj) ) 769 770 771 ! ALLOCATE(tmp_u_amp_mat(jpi,jpj),tmp_v_amp_mat(jpi,jpj),tmp_u_phi_mat(jpi,jpj),tmp_v_phi_mat(jpi,jpj)) 772 !! ALLOCATE(a_u_mat(jpi,jpj),b_u_mat(jpi,jpj),a_v_mat(jpi,jpj),b_v_mat(jpi,jpj)) 773 !! ALLOCATE(qmax_mat(jpi,jpj),qmin_mat(jpi,jpj),ecc_mat(jpi,jpj)) 774 !! ALLOCATE(thetamax_mat(jpi,jpj),thetamin_mat(jpi,jpj),Qc_mat(jpi,jpj),Qac_mat(jpi,jpj)) 775 !! ALLOCATE(gc_mat(jpi,jpj),gac_mat(jpi,jpj),Phi_Ua_mat(jpi,jpj),dir_Ua_mat(jpi,jpj),polarity_mat(jpi,jpj)) 776 777 ! endif 776 778 777 779 do jgrid=1,nvar_2d … … 829 831 830 832 831 IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN832 833 !IF (m_posi_2d(jgrid) == 2) THEN834 IF (TRIM(suffix) == TRIM('u2d')) THEN835 if (lwp) WRITE(numout,*) "harm_ana_out ln_diaharm_postproc_vel: "//TRIM(Wave(ntide_all(jh))%cname_tide)//' u2d '//TRIM(suffix)836 amp_u2d(jh,:,:) = h_out2D(:,:)837 phi_u2d(jh,:,:) = rpi*g_out2D(:,:)/180.0838 ENDIF839 840 !IF (m_posi_2d(jgrid) == 3) THEN841 IF (TRIM(suffix) == TRIM('v2d')) THEN842 if (lwp) WRITE(numout,*) "harm_ana_out ln_diaharm_postproc_vel: "//TRIM(Wave(ntide_all(jh))%cname_tide)//' v2d '//TRIM(suffix)843 amp_v2d(jh,:,:) = h_out2D(:,:)844 phi_v2d(jh,:,:) = rpi*g_out2D(:,:)/180.0845 ENDIF846 ENDIF847 848 CALL FLUSH(numout)833 ! IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN 834 835 ! !IF (m_posi_2d(jgrid) == 2) THEN 836 ! IF (TRIM(suffix) == TRIM('u2d')) THEN 837 ! if (lwp) WRITE(numout,*) "harm_ana_out ln_diaharm_postproc_vel: "//TRIM(Wave(ntide_all(jh))%cname_tide)//' u2d '//TRIM(suffix) 838 ! amp_u2d(jh,:,:) = h_out2D(:,:) 839 ! phi_u2d(jh,:,:) = rpi*g_out2D(:,:)/180.0 840 ! ENDIF 841 842 ! !IF (m_posi_2d(jgrid) == 3) THEN 843 ! IF (TRIM(suffix) == TRIM('v2d')) THEN 844 ! if (lwp) WRITE(numout,*) "harm_ana_out ln_diaharm_postproc_vel: "//TRIM(Wave(ntide_all(jh))%cname_tide)//' v2d '//TRIM(suffix) 845 ! amp_v2d(jh,:,:) = h_out2D(:,:) 846 ! phi_v2d(jh,:,:) = rpi*g_out2D(:,:)/180.0 847 ! ENDIF 848 ! ENDIF 849 850 ! CALL FLUSH(numout) 849 851 850 852 … … 934 936 CALL FLUSH(numout) 935 937 936 IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN 937 IF(lwp) WRITE(numout,*) "diaharm_fast: Postprocess barotropic velocity tidal parameters" 938 CALL FLUSH(numout) 939 DO jh=1,nb_ana 940 941 942 tmp_u_amp_mat(:,:) = 0. 943 tmp_v_amp_mat(:,:) = 0. 944 tmp_u_phi_mat(:,:) = 0. 945 tmp_v_phi_mat(:,:) = 0. 946 947 ! a_u_mat(:,:) = 0. 948 ! b_u_mat(:,:) = 0. 949 ! a_v_mat(:,:) = 0. 950 ! b_v_mat(:,:) = 0. 951 952 ! qmax_mat(:,:) = 0. 953 ! qmin_mat(:,:) = 0. 954 955 ! ecc_mat(:,:) = 0 956 ! thetamax_mat(:,:) =0. 957 ! thetamin_mat(:,:) = 0. 958 959 ! Qc_mat(:,:) = 0. 960 ! Qac_mat(:,:) = 0. 961 ! gc_mat(:,:) = 0. 962 ! gac_mat(:,:) = 0. 963 964 ! Phi_Ua_mat(:,:) = 0. 965 ! dir_Ua_mat(:,:) = 0. 966 ! polarity_mat(:,:) = 0. 967 968 969 ! DO jj = 2, nlcj - 1 970 ! DO ji = 2, nlci - 1 971 972 ! do jj=2,nlcj 973 ! do ji=2,nlci 974 !IF ((ssumask(ji,jj) + ssumask(ji-1,jj)) == 0 ) CYCLE 975 !IF ((ssvmask(ji,jj) + ssvmask(ji,jj-1)) == 0 ) CYCLE 976 977 ! IF ( ((ssumask(ji,jj) + ssumask(ji-1,jj)) > 0 ) .AND. ((ssvmask(ji,jj) + ssvmask(ji,jj-1)) > 0 ) ) THEN 978 ! tmp_u_amp = ((amp_u2d(jh,ji,jj)*ssumask(ji,jj)) + (amp_u2d(jh,ji-1,jj)*ssumask(ji-1,jj)))/(ssumask(ji,jj) + ssumask(ji-1,jj)) 979 ! tmp_v_amp = ((amp_v2d(jh,ji,jj)*ssvmask(ji,jj)) + (amp_v2d(jh,ji,jj-1)*ssvmask(ji,jj-1)))/(ssvmask(ji,jj) + ssvmask(ji,jj-1)) 938 ! IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN 939 ! IF(lwp) WRITE(numout,*) "diaharm_fast: Postprocess barotropic velocity tidal parameters" 940 ! CALL FLUSH(numout) 941 ! DO jh=1,nb_ana 942 943 944 ! tmp_u_amp_mat(:,:) = 0. 945 ! tmp_v_amp_mat(:,:) = 0. 946 ! tmp_u_phi_mat(:,:) = 0. 947 ! tmp_v_phi_mat(:,:) = 0. 948 949 !! a_u_mat(:,:) = 0. 950 !! b_u_mat(:,:) = 0. 951 !! a_v_mat(:,:) = 0. 952 !! b_v_mat(:,:) = 0. 953 954 !! qmax_mat(:,:) = 0. 955 !! qmin_mat(:,:) = 0. 956 957 !! ecc_mat(:,:) = 0 958 !! thetamax_mat(:,:) =0. 959 !! thetamin_mat(:,:) = 0. 960 961 !! Qc_mat(:,:) = 0. 962 !! Qac_mat(:,:) = 0. 963 !! gc_mat(:,:) = 0. 964 !! gac_mat(:,:) = 0. 965 966 !! Phi_Ua_mat(:,:) = 0. 967 !! dir_Ua_mat(:,:) = 0. 968 !! polarity_mat(:,:) = 0. 969 970 971 !! DO jj = 2, nlcj - 1 972 !! DO ji = 2, nlci - 1 973 974 !! do jj=2,nlcj 975 !! do ji=2,nlci 976 ! !IF ((ssumask(ji,jj) + ssumask(ji-1,jj)) == 0 ) CYCLE 977 ! !IF ((ssvmask(ji,jj) + ssvmask(ji,jj-1)) == 0 ) CYCLE 978 979 !! IF ( ((ssumask(ji,jj) + ssumask(ji-1,jj)) > 0 ) .AND. ((ssvmask(ji,jj) + ssvmask(ji,jj-1)) > 0 ) ) THEN 980 !! tmp_u_amp = ((amp_u2d(jh,ji,jj)*ssumask(ji,jj)) + (amp_u2d(jh,ji-1,jj)*ssumask(ji-1,jj)))/(ssumask(ji,jj) + ssumask(ji-1,jj)) 981 !! tmp_v_amp = ((amp_v2d(jh,ji,jj)*ssvmask(ji,jj)) + (amp_v2d(jh,ji,jj-1)*ssvmask(ji,jj-1)))/(ssvmask(ji,jj) + ssvmask(ji,jj-1)) 982 !! ! WORK ON THE WRAP AROUND 983 !! tmp_u_phi = ((phi_u2d(jh,ji,jj)*ssumask(ji,jj)) + (phi_u2d(jh,ji-1,jj)*ssumask(ji-1,jj)))/(ssumask(ji,jj) + ssumask(ji-1,jj)) 984 !! tmp_v_phi = ((phi_v2d(jh,ji,jj)*ssvmask(ji,jj)) + (phi_v2d(jh,ji,jj-1)*ssvmask(ji,jj-1)))/(ssvmask(ji,jj) + ssvmask(ji,jj-1)) 985 986 ! do jj=1,nlcj 987 ! do ji=1,nlci 988 989 !! tmp_u_amp = ((amp_u2d(jh,ji,jj)) + (amp_u2d(jh,ji-1,jj)))/(2.) 990 !! tmp_v_amp = ((amp_v2d(jh,ji,jj)) + (amp_v2d(jh,ji,jj-1)))/(2.) 991 !! ! WORK ON THE WRAP AROUND 992 !! tmp_u_phi = ((phi_u2d(jh,ji,jj)) + (phi_u2d(jh,ji-1,jj)))/(2.) 993 !! tmp_v_phi = ((phi_v2d(jh,ji,jj)) + (phi_v2d(jh,ji,jj-1)))/(2.) 994 995 996 997 ! tmp_u_amp = (amp_u2d(jh,ji,jj)) 998 ! tmp_v_amp = (amp_v2d(jh,ji,jj)) 980 999 ! ! WORK ON THE WRAP AROUND 981 ! tmp_u_phi = ((phi_u2d(jh,ji,jj)*ssumask(ji,jj)) + (phi_u2d(jh,ji-1,jj)*ssumask(ji-1,jj)))/(ssumask(ji,jj) + ssumask(ji-1,jj)) 982 ! tmp_v_phi = ((phi_v2d(jh,ji,jj)*ssvmask(ji,jj)) + (phi_v2d(jh,ji,jj-1)*ssvmask(ji,jj-1)))/(ssvmask(ji,jj) + ssvmask(ji,jj-1)) 983 984 do jj=1,nlcj 985 do ji=1,nlci 986 987 ! tmp_u_amp = ((amp_u2d(jh,ji,jj)) + (amp_u2d(jh,ji-1,jj)))/(2.) 988 ! tmp_v_amp = ((amp_v2d(jh,ji,jj)) + (amp_v2d(jh,ji,jj-1)))/(2.) 989 ! ! WORK ON THE WRAP AROUND 990 ! tmp_u_phi = ((phi_u2d(jh,ji,jj)) + (phi_u2d(jh,ji-1,jj)))/(2.) 991 ! tmp_v_phi = ((phi_v2d(jh,ji,jj)) + (phi_v2d(jh,ji,jj-1)))/(2.) 992 993 994 995 tmp_u_amp = (amp_u2d(jh,ji,jj)) 996 tmp_v_amp = (amp_v2d(jh,ji,jj)) 997 ! WORK ON THE WRAP AROUND 998 tmp_u_phi = (phi_u2d(jh,ji,jj)) 999 tmp_v_phi = (phi_v2d(jh,ji,jj)) 1000 1001 1002 1003 ! a_u = tmp_U_amp * cos(tmp_U_phi) 1004 ! b_u = tmp_U_amp * sin(tmp_U_phi) 1005 ! a_v = tmp_V_amp * cos(tmp_V_phi) 1006 ! b_v = tmp_V_amp * sin(tmp_V_phi) 1007 1008 ! twodelta = atan2( (tmp_V_amp**2 * sin( 2*(tmp_U_phi - tmp_V_phi) ) ) , ( tmp_U_amp**2 + tmp_V_amp**2 * cos( 2*(tmp_U_phi - tmp_V_phi) ) ) ) 1009 ! delta = twodelta/2. 1010 1011 ! !alpha2 = sqrt( tmp_U_amp**4 + tmp_V_amp**4 + 2*tmp_U_amp**2*tmp_V_amp**2*cos(2*(tmp_U_phi - tmp_V_phi)) ) 1012 1013 ! tmpreal = tmp_U_amp**4 + tmp_V_amp**4 + 2*tmp_U_amp**2*tmp_V_amp**2*cos(2*(tmp_U_phi - tmp_V_phi)) 1014 ! if (tmpreal < 0) CYCLE 1015 ! alpha2 = sqrt( tmp_U_amp**4 + tmp_V_amp**4 + 2*tmp_U_amp**2*tmp_V_amp**2*cos(2*(tmp_U_phi - tmp_V_phi)) ) 1016 ! if (alpha2 < 0) CYCLE 1017 ! alpha= sqrt( alpha2 ) 1018 1019 1020 ! !major and minor axis of the ellipse 1021 ! !qmax = sqrt( (tmp_U_amp**2 + tmp_V_amp**2 + alpha**2)/2 ) 1022 ! !tmpreal = (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 1023 ! !qmin = 0 1024 ! !if (tmpreal > 0) qmin = sqrt( (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 ) ! but always positive. 1025 1026 ! tmpreal = (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 1027 ! if (tmpreal < 0) CYCLE 1028 ! qmin = sqrt( (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 ) ! but always positive. 1029 1030 ! !eccentricity of ellipse 1031 ! ecc = (qmax - qmin)/(qmax + qmin) 1032 ! ! Angle of major and minor ellipse 1033 ! thetamax = atan2(( tmp_V_amp * cos((tmp_U_phi - tmp_V_phi) - delta) ) , ( tmp_U_amp * cos( delta) ) ) 1034 ! thetamin = thetamax + rpi/2. 1035 1036 1037 1038 ! ! Rotary current components: Pugh A3.10 1039 ! ! Clockwise (c) and anticlockwise (ac) rotating rotate_wind_vectors 1040 ! ! so Qc = clockwise = anticyclonic = negative 1041 ! ! and Qac = anticlockwise = cyclonic = negative 1042 1043 ! tmpreal = tmp_U_amp**2 + tmp_V_amp**2 - (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) 1044 ! if (tmpreal < 0) CYCLE 1045 ! Qc = 0.5*sqrt( tmp_U_amp**2 + tmp_V_amp**2 - (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) ) 1046 1047 ! tmpreal = tmp_U_amp**2 + tmp_V_amp**2 + (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) 1048 ! if (tmpreal < 0) CYCLE 1049 ! Qac = 0.5*sqrt( tmp_U_amp**2 + tmp_V_amp**2 + (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) ) 1050 1051 1052 ! gc = atan2( ( ( tmp_U_amp*sin( tmp_U_phi ) ) + (tmp_V_amp*cos( tmp_V_phi) ) ) , ( (tmp_U_amp*cos( tmp_U_phi )) - (tmp_V_amp*sin( tmp_V_phi )) ) ) 1053 ! gac = atan2( ( ( -tmp_U_amp*sin( tmp_U_phi ) ) + (tmp_V_amp*cos( tmp_V_phi) ) ) , ( (tmp_U_amp*cos( tmp_U_phi )) + (tmp_V_amp*sin( tmp_V_phi )) ) ) 1054 1055 ! !Pugh A3.2 1056 ! Phi_Ua = -0.5*(gac - gc) 1057 ! dir_Ua = 0.5*(gac + gc) ! positive from x axis 1058 ! polarity = (Qac - Qc)/qmax 1059 1060 1061 1062 tmp_u_amp_mat(ji,jj) = tmp_u_amp 1063 tmp_v_amp_mat(ji,jj) = tmp_v_amp 1064 tmp_u_phi_mat(ji,jj) = tmp_u_phi 1065 tmp_v_phi_mat(ji,jj) = tmp_v_phi 1066 1067 1068 ! a_u_mat(ji,jj) = a_u 1069 ! b_u_mat(ji,jj) = b_u 1070 ! a_v_mat(ji,jj) = a_v 1071 ! b_v_mat(ji,jj) = b_v 1072 1073 ! qmax_mat(ji,jj) = qmax 1074 ! qmin_mat(ji,jj) = qmin 1075 1076 ! ecc_mat(ji,jj) = ecc 1077 ! thetamax_mat(ji,jj) = thetamax 1078 ! thetamin_mat(ji,jj) = thetamin 1079 1080 ! Qc_mat(ji,jj) = Qc 1081 ! Qac_mat(ji,jj) = Qac 1082 ! gc_mat(ji,jj) = gc 1083 ! gac_mat(ji,jj) = gac 1084 1085 ! Phi_Ua_mat(ji,jj) = Phi_Ua 1086 ! dir_Ua_mat(ji,jj) = dir_Ua 1087 ! polarity_mat(ji,jj) = polarity 1088 1089 ! ENDIF 1090 END DO 1091 END DO 1092 1093 1094 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_u_amp_t_uvbar' 1095 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1096 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1097 ! CALL iom_put( TRIM(tmp_name), tmp_u_amp_mat(:,:)) 1098 ! ENDIF 1099 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_v_amp_t_uvbar' 1100 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1101 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1102 ! CALL iom_put( TRIM(tmp_name), tmp_v_amp_mat(:,:)) 1103 ! ENDIF 1104 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_u_phi_t_uvbar' 1105 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1106 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1107 ! CALL iom_put( TRIM(tmp_name), tmp_u_phi_mat(:,:)) 1108 ! ENDIF 1109 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_v_phi_t_uvbar' 1110 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1111 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1112 ! CALL iom_put( TRIM(tmp_name), tmp_v_phi_mat(:,:)) 1113 ! ENDIF 1114 1115 1116 1117 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_a_u_uvbar' 1118 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1119 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1120 ! CALL iom_put( TRIM(tmp_name), a_u_mat(:,:)) 1121 ! ENDIF 1122 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_a_v_uvbar' 1123 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1124 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1125 ! CALL iom_put( TRIM(tmp_name), a_v_mat(:,:)) 1126 ! ENDIF 1127 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_b_u_uvbar' 1128 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1129 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1130 ! CALL iom_put( TRIM(tmp_name), b_u_mat(:,:)) 1131 ! ENDIF 1132 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_b_v_uvbar' 1133 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1134 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1135 ! CALL iom_put( TRIM(tmp_name), b_v_mat(:,:)) 1136 ! ENDIF 1137 1138 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_qmax_uvbar' 1139 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1140 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1141 ! CALL iom_put( TRIM(tmp_name), qmax_mat(:,:)) 1142 ! ENDIF 1143 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_qmin_uvbar' 1144 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1145 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1146 ! CALL iom_put( TRIM(tmp_name), qmin_mat(:,:)) 1147 ! ENDIF 1148 1149 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_ecc_uvbar' 1150 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1151 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1152 ! CALL iom_put( TRIM(tmp_name), ecc_mat(:,:)) 1153 ! ENDIF 1154 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_thetamax_uvbar' 1155 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1156 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1157 ! CALL iom_put( TRIM(tmp_name), thetamax_mat(:,:)) 1158 ! ENDIF 1159 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_thetamin_uvbar' 1160 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1161 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1162 ! CALL iom_put( TRIM(tmp_name), thetamin_mat(:,:)) 1163 ! ENDIF 1164 1165 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_Qc_uvbar' 1166 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1167 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1168 ! CALL iom_put( TRIM(tmp_name), Qc_mat(:,:)) 1169 ! ENDIF 1170 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_Qac_uvbar' 1171 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1172 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1173 ! CALL iom_put( TRIM(tmp_name), Qac_mat(:,:)) 1174 ! ENDIF 1175 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_gc_uvbar' 1176 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1177 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1178 ! CALL iom_put( TRIM(tmp_name), gc_mat(:,:)) 1179 ! ENDIF 1180 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_gac_uvbar' 1181 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1182 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1183 ! CALL iom_put( TRIM(tmp_name), gac_mat(:,:)) 1184 ! ENDIF 1185 1186 1187 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_Phi_Ua_uvbar' 1188 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1189 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1190 ! CALL iom_put( TRIM(tmp_name), Phi_Ua_mat(:,:)) 1191 ! ENDIF 1192 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_dir_Ua_uvbar' 1193 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1194 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1195 ! CALL iom_put( TRIM(tmp_name), dir_Ua_mat(:,:)) 1196 ! ENDIF 1197 ! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_polarity_uvbar' 1198 ! IF( iom_use(TRIM(tmp_name)) ) THEN 1199 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1200 ! CALL iom_put( TRIM(tmp_name), polarity_mat(:,:)) 1201 ! ENDIF 1202 1203 tmp_u_amp_mat(:,:) = 0. 1204 tmp_v_amp_mat(:,:) = 0. 1205 tmp_u_phi_mat(:,:) = 0. 1206 tmp_v_phi_mat(:,:) = 0. 1207 1208 ! a_u_mat(:,:) = 0. 1209 ! b_u_mat(:,:) = 0. 1210 ! a_v_mat(:,:) = 0. 1211 ! b_v_mat(:,:) = 0. 1212 1213 ! qmax_mat(:,:) = 0. 1214 ! qmin_mat(:,:) = 0. 1215 1216 ! ecc_mat(:,:) = 0 1217 ! thetamax_mat(:,:) =0. 1218 ! thetamin_mat(:,:) = 0. 1219 1220 ! Qc_mat(:,:) = 0. 1221 ! Qac_mat(:,:) = 0. 1222 ! gc_mat(:,:) = 0. 1223 ! gac_mat(:,:) = 0. 1224 1225 ! Phi_Ua_mat(:,:) = 0. 1226 ! dir_Ua_mat(:,:) = 0. 1227 ! polarity_mat(:,:) = 0. 1228 1229 1230 END DO 1231 IF(lwp) WRITE(numout,*) "diaharm_fast: Finshed postprocessing 2d velocity tidal parameters" 1232 ENDIF 1233 1234 CALL FLUSH(numout) 1235 1236 IF (ln_diaharm_postproc_vel .AND. ln_ana_uv3d) THEN 1237 IF(lwp) WRITE(numout,*) "diaharm_fast: Postprocess 3d velocity tidal parameters" 1238 ENDIF 1239 1240 1241 CALL FLUSH(numout) 1000 ! tmp_u_phi = (phi_u2d(jh,ji,jj)) 1001 ! tmp_v_phi = (phi_v2d(jh,ji,jj)) 1002 1003 1004 1005 !! a_u = tmp_U_amp * cos(tmp_U_phi) 1006 !! b_u = tmp_U_amp * sin(tmp_U_phi) 1007 !! a_v = tmp_V_amp * cos(tmp_V_phi) 1008 !! b_v = tmp_V_amp * sin(tmp_V_phi) 1009 1010 !! twodelta = atan2( (tmp_V_amp**2 * sin( 2*(tmp_U_phi - tmp_V_phi) ) ) , ( tmp_U_amp**2 + tmp_V_amp**2 * cos( 2*(tmp_U_phi - tmp_V_phi) ) ) ) 1011 !! delta = twodelta/2. 1012 1013 !! !alpha2 = sqrt( tmp_U_amp**4 + tmp_V_amp**4 + 2*tmp_U_amp**2*tmp_V_amp**2*cos(2*(tmp_U_phi - tmp_V_phi)) ) 1014 1015 !! tmpreal = tmp_U_amp**4 + tmp_V_amp**4 + 2*tmp_U_amp**2*tmp_V_amp**2*cos(2*(tmp_U_phi - tmp_V_phi)) 1016 !! if (tmpreal < 0) CYCLE 1017 !! alpha2 = sqrt( tmp_U_amp**4 + tmp_V_amp**4 + 2*tmp_U_amp**2*tmp_V_amp**2*cos(2*(tmp_U_phi - tmp_V_phi)) ) 1018 !! if (alpha2 < 0) CYCLE 1019 !! alpha= sqrt( alpha2 ) 1020 1021 1022 !! !major and minor axis of the ellipse 1023 !! !qmax = sqrt( (tmp_U_amp**2 + tmp_V_amp**2 + alpha**2)/2 ) 1024 !! !tmpreal = (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 1025 !! !qmin = 0 1026 !! !if (tmpreal > 0) qmin = sqrt( (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 ) ! but always positive. 1027 1028 !! tmpreal = (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 1029 !! if (tmpreal < 0) CYCLE 1030 !! qmin = sqrt( (tmp_U_amp**2 + tmp_V_amp**2 - alpha**2)/2 ) ! but always positive. 1031 1032 !! !eccentricity of ellipse 1033 !! ecc = (qmax - qmin)/(qmax + qmin) 1034 !! ! Angle of major and minor ellipse 1035 !! thetamax = atan2(( tmp_V_amp * cos((tmp_U_phi - tmp_V_phi) - delta) ) , ( tmp_U_amp * cos( delta) ) ) 1036 !! thetamin = thetamax + rpi/2. 1037 1038 1039 1040 !! ! Rotary current components: Pugh A3.10 1041 !! ! Clockwise (c) and anticlockwise (ac) rotating rotate_wind_vectors 1042 !! ! so Qc = clockwise = anticyclonic = negative 1043 !! ! and Qac = anticlockwise = cyclonic = negative 1044 1045 !! tmpreal = tmp_U_amp**2 + tmp_V_amp**2 - (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) 1046 !! if (tmpreal < 0) CYCLE 1047 !! Qc = 0.5*sqrt( tmp_U_amp**2 + tmp_V_amp**2 - (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) ) 1048 1049 !! tmpreal = tmp_U_amp**2 + tmp_V_amp**2 + (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) 1050 !! if (tmpreal < 0) CYCLE 1051 !! Qac = 0.5*sqrt( tmp_U_amp**2 + tmp_V_amp**2 + (2*tmp_U_amp*tmp_V_amp*sin( tmp_V_phi - tmp_U_phi)) ) 1052 1053 1054 !! gc = atan2( ( ( tmp_U_amp*sin( tmp_U_phi ) ) + (tmp_V_amp*cos( tmp_V_phi) ) ) , ( (tmp_U_amp*cos( tmp_U_phi )) - (tmp_V_amp*sin( tmp_V_phi )) ) ) 1055 !! gac = atan2( ( ( -tmp_U_amp*sin( tmp_U_phi ) ) + (tmp_V_amp*cos( tmp_V_phi) ) ) , ( (tmp_U_amp*cos( tmp_U_phi )) + (tmp_V_amp*sin( tmp_V_phi )) ) ) 1056 1057 !! !Pugh A3.2 1058 !! Phi_Ua = -0.5*(gac - gc) 1059 !! dir_Ua = 0.5*(gac + gc) ! positive from x axis 1060 !! polarity = (Qac - Qc)/qmax 1061 1062 1063 1064 ! tmp_u_amp_mat(ji,jj) = tmp_u_amp 1065 ! tmp_v_amp_mat(ji,jj) = tmp_v_amp 1066 ! tmp_u_phi_mat(ji,jj) = tmp_u_phi 1067 ! tmp_v_phi_mat(ji,jj) = tmp_v_phi 1068 1069 1070 !! a_u_mat(ji,jj) = a_u 1071 !! b_u_mat(ji,jj) = b_u 1072 !! a_v_mat(ji,jj) = a_v 1073 !! b_v_mat(ji,jj) = b_v 1074 1075 !! qmax_mat(ji,jj) = qmax 1076 !! qmin_mat(ji,jj) = qmin 1077 1078 !! ecc_mat(ji,jj) = ecc 1079 !! thetamax_mat(ji,jj) = thetamax 1080 !! thetamin_mat(ji,jj) = thetamin 1081 1082 !! Qc_mat(ji,jj) = Qc 1083 !! Qac_mat(ji,jj) = Qac 1084 !! gc_mat(ji,jj) = gc 1085 !! gac_mat(ji,jj) = gac 1086 1087 !! Phi_Ua_mat(ji,jj) = Phi_Ua 1088 !! dir_Ua_mat(ji,jj) = dir_Ua 1089 !! polarity_mat(ji,jj) = polarity 1090 1091 !! ENDIF 1092 ! END DO 1093 ! END DO 1094 1095 1096 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_u_amp_t_uvbar' 1097 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1098 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1099 !! CALL iom_put( TRIM(tmp_name), tmp_u_amp_mat(:,:)) 1100 !! ENDIF 1101 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_v_amp_t_uvbar' 1102 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1103 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1104 !! CALL iom_put( TRIM(tmp_name), tmp_v_amp_mat(:,:)) 1105 !! ENDIF 1106 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_u_phi_t_uvbar' 1107 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1108 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1109 !! CALL iom_put( TRIM(tmp_name), tmp_u_phi_mat(:,:)) 1110 !! ENDIF 1111 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_v_phi_t_uvbar' 1112 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1113 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1114 !! CALL iom_put( TRIM(tmp_name), tmp_v_phi_mat(:,:)) 1115 !! ENDIF 1116 1117 1118 1119 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_a_u_uvbar' 1120 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1121 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1122 !! CALL iom_put( TRIM(tmp_name), a_u_mat(:,:)) 1123 !! ENDIF 1124 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_a_v_uvbar' 1125 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1126 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1127 !! CALL iom_put( TRIM(tmp_name), a_v_mat(:,:)) 1128 !! ENDIF 1129 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_b_u_uvbar' 1130 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1131 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1132 !! CALL iom_put( TRIM(tmp_name), b_u_mat(:,:)) 1133 !! ENDIF 1134 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_b_v_uvbar' 1135 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1136 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1137 !! CALL iom_put( TRIM(tmp_name), b_v_mat(:,:)) 1138 !! ENDIF 1139 1140 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_qmax_uvbar' 1141 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1142 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1143 !! CALL iom_put( TRIM(tmp_name), qmax_mat(:,:)) 1144 !! ENDIF 1145 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_qmin_uvbar' 1146 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1147 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1148 !! CALL iom_put( TRIM(tmp_name), qmin_mat(:,:)) 1149 !! ENDIF 1150 1151 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_ecc_uvbar' 1152 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1153 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1154 !! CALL iom_put( TRIM(tmp_name), ecc_mat(:,:)) 1155 !! ENDIF 1156 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_thetamax_uvbar' 1157 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1158 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1159 !! CALL iom_put( TRIM(tmp_name), thetamax_mat(:,:)) 1160 !! ENDIF 1161 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_thetamin_uvbar' 1162 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1163 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1164 !! CALL iom_put( TRIM(tmp_name), thetamin_mat(:,:)) 1165 !! ENDIF 1166 1167 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_Qc_uvbar' 1168 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1169 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1170 !! CALL iom_put( TRIM(tmp_name), Qc_mat(:,:)) 1171 !! ENDIF 1172 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_Qac_uvbar' 1173 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1174 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1175 !! CALL iom_put( TRIM(tmp_name), Qac_mat(:,:)) 1176 !! ENDIF 1177 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_gc_uvbar' 1178 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1179 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1180 !! CALL iom_put( TRIM(tmp_name), gc_mat(:,:)) 1181 !! ENDIF 1182 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_gac_uvbar' 1183 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1184 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1185 !! CALL iom_put( TRIM(tmp_name), gac_mat(:,:)) 1186 !! ENDIF 1187 1188 1189 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_Phi_Ua_uvbar' 1190 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1191 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1192 !! CALL iom_put( TRIM(tmp_name), Phi_Ua_mat(:,:)) 1193 !! ENDIF 1194 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_dir_Ua_uvbar' 1195 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1196 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1197 !! CALL iom_put( TRIM(tmp_name), dir_Ua_mat(:,:)) 1198 !! ENDIF 1199 !! tmp_name=TRIM(Wave(ntide_all(jh))%cname_tide)//'_polarity_uvbar' 1200 !! IF( iom_use(TRIM(tmp_name)) ) THEN 1201 !! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name) 1202 !! CALL iom_put( TRIM(tmp_name), polarity_mat(:,:)) 1203 !! ENDIF 1204 1205 ! tmp_u_amp_mat(:,:) = 0. 1206 ! tmp_v_amp_mat(:,:) = 0. 1207 ! tmp_u_phi_mat(:,:) = 0. 1208 ! tmp_v_phi_mat(:,:) = 0. 1209 1210 !! a_u_mat(:,:) = 0. 1211 !! b_u_mat(:,:) = 0. 1212 !! a_v_mat(:,:) = 0. 1213 !! b_v_mat(:,:) = 0. 1214 1215 !! qmax_mat(:,:) = 0. 1216 !! qmin_mat(:,:) = 0. 1217 1218 !! ecc_mat(:,:) = 0 1219 !! thetamax_mat(:,:) =0. 1220 !! thetamin_mat(:,:) = 0. 1221 1222 !! Qc_mat(:,:) = 0. 1223 !! Qac_mat(:,:) = 0. 1224 !! gc_mat(:,:) = 0. 1225 !! gac_mat(:,:) = 0. 1226 1227 !! Phi_Ua_mat(:,:) = 0. 1228 !! dir_Ua_mat(:,:) = 0. 1229 !! polarity_mat(:,:) = 0. 1230 1231 1232 ! END DO 1233 ! IF(lwp) WRITE(numout,*) "diaharm_fast: Finshed postprocessing 2d velocity tidal parameters" 1234 ! ENDIF 1235 1236 ! CALL FLUSH(numout) 1237 1238 ! IF (ln_diaharm_postproc_vel .AND. ln_ana_uv3d) THEN 1239 ! IF(lwp) WRITE(numout,*) "diaharm_fast: Postprocess 3d velocity tidal parameters" 1240 ! ENDIF 1241 1242 1243 ! CALL FLUSH(numout) 1242 1244 1243 1245 ! to output tidal parameters, u and v on t grid … … 1256 1258 1257 1259 1258 IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN1259 1260 DEALLOCATE(amp_u2d, amp_v2d, phi_u2d, phi_v2d )1261 1262 1263 DEALLOCATE(tmp_u_amp_mat, tmp_v_amp_mat, tmp_u_phi_mat, tmp_v_phi_mat )1264 ! DEALLOCATE(a_u_mat, b_u_mat, a_v_mat, b_v_mat, qmax_mat, qmin_mat, ecc_mat )1265 ! DEALLOCATE(thetamax_mat, thetamin_mat, Qc_mat, Qac_mat, gc_mat, gac_mat )1266 ! DEALLOCATE(Phi_Ua_mat, dir_Ua_mat, polarity_mat )1267 1268 endif1269 1270 IF(lwp) WRITE(numout,*) "diaharm_fast: Deallocated 2d velocity tidal parameters"1260 ! IF (ln_diaharm_postproc_vel .AND. ln_ana_uvbar) THEN 1261 1262 ! DEALLOCATE(amp_u2d, amp_v2d, phi_u2d, phi_v2d ) 1263 1264 1265 ! DEALLOCATE(tmp_u_amp_mat, tmp_v_amp_mat, tmp_u_phi_mat, tmp_v_phi_mat ) 1266 !! DEALLOCATE(a_u_mat, b_u_mat, a_v_mat, b_v_mat, qmax_mat, qmin_mat, ecc_mat ) 1267 !! DEALLOCATE(thetamax_mat, thetamin_mat, Qc_mat, Qac_mat, gc_mat, gac_mat ) 1268 !! DEALLOCATE(Phi_Ua_mat, dir_Ua_mat, polarity_mat ) 1269 1270 ! endif 1271 1272 ! IF(lwp) WRITE(numout,*) "diaharm_fast: Deallocated 2d velocity tidal parameters" 1271 1273 1272 1274 CALL FLUSH(numout)
Note: See TracChangeset
for help on using the changeset viewer.