! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKSX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checksx(s, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a scalar point ! on the y-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! !----------------------------------------------------------------------- ! ! INPUT : ! ! s An array field defined at the scalar point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: s (nx,ny,nz) ! An array field defined at the ! scalar point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz-1 DO j=1,ny-1 DO i=1,(nx-1)/2+1 tem1(i,j,k)=s( nx-i,j,k) - s(i,j,k) END DO END DO END DO j = (ny-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,1,(nx-1)/2,j,j,1,nz-1,ch,0.0,2) RETURN END SUBROUTINE checksx ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKUX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkux(u, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a u-point ! on the y-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue ! 11/20/91 ! ! MODIFICATION HISTORY: ! ! 5/06/92 (M. Xue) ! Added full documentation. ! !----------------------------------------------------------------------- ! ! INPUT : ! ! u An array field defined at the u grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: u (nx,ny,nz) ! An array field defined at the u ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz-1 DO j=1,ny-1 DO i=1,(nx-1)/2+1 tem1(i,j,k)=u( nx -i+1, j,k) + u(i, j,k) END DO END DO END DO j = (ny-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,1,(nx-1)/2+1,j,j,1,nz-1,ch,.0,2) RETURN END SUBROUTINE checkux ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKVX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkvx(v, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a v-point ! on the y-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue ! 11/20/91. ! ! MODIFICATION HISTORY: ! ! 5/06/92 (M. Xue) ! Added full documentation. ! !----------------------------------------------------------------------- ! ! INPUT : ! ! v An array field defined at the v grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: v (nx,ny,nz) ! An array field defined at the v ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz-1 DO j=1,ny DO i=1,(nx-1)/2+1 tem1(i,j,k)=v( nx-i,j,k) - v(i,j,k) END DO END DO END DO j = (ny-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,1,(nx-1)/2,j,j,1,nz-1,ch,0.0,2) RETURN END SUBROUTINE checkvx ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKWX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkwx(w, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a w-point ! on the y-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue ! 11/20/91. ! ! MODIFICATION HISTORY: ! ! 5/06/92 (M. Xue) ! Added full documentation. ! !----------------------------------------------------------------------- ! ! INPUT : ! ! w An array field defined at the w grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: w (nx,ny,nz) ! An array field defined at the w ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz DO j=1,ny-1 DO i=1,(nx-1)/2+1 tem1(i,j,k)=w( nx-i,j,k) - w(i,j,k) END DO END DO END DO j = (ny-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,1,(nx-1)/2,j,j,1,nz,ch,.0,2) RETURN END SUBROUTINE checkwx ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKSY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checksy(s, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a scalar point ! on the x-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! !----------------------------------------------------------------------- ! ! INPUT : ! ! s An array field defined at the scalar point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: s (nx,ny,nz) ! An array field defined at the ! scalar point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz-1 DO i=1,nx-1 DO j=1,(ny-1)/2+1 tem1(i,j,k)=s( i,ny-j,k) - s(i,j,k) END DO END DO END DO i = (nx-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,i,i,1,(ny-1)/2,1,nz-1,ch,0.0,2) RETURN END SUBROUTINE checksy ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKUY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkuy(u, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a u-point ! on the x-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! !----------------------------------------------------------------------- ! ! INPUT : ! ! u An array field defined at the u grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: u (nx,ny,nz) ! An array field defined at the u ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz-1 DO i=1,nx-1 DO j=1,(ny-1)/2+1 tem1(i,j,k)=u( i,ny-j,k) - u(i, j,k) END DO END DO END DO i = (nx-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,i,i,1,(ny-1)/2,1,nz-1,ch,.0,2) RETURN END SUBROUTINE checkuy ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKVY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkvy(v, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a v-point ! on the x-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! !----------------------------------------------------------------------- ! ! INPUT : ! ! v An array field defined at the v grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: v (nx,ny,nz) ! An array field defined at the v ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz-1 DO i=1,nx-1 DO j=1,(ny-1)/2+1 tem1(i,j,k)=v( i,ny-j+1,k) + v(i,j,k) END DO END DO END DO i = (nx-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,i,i,1,(ny-1)/2+1,1,nz-1,ch,0.0,2) RETURN END SUBROUTINE checkvy ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKWY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkwy(w, nx,ny,nz, ch, tem1),1 ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a w-point ! on the x-z plane containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! !----------------------------------------------------------------------- ! ! INPUT : ! ! w An array field defined at the w grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions REAL :: w (nx,ny,nz) ! An array field defined at the w ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=1,nz DO i=1,nx-1 DO j=1,(ny-1)/2+1 tem1(i,j,k)=w( i,ny-j,k) - w(i,j,k) END DO END DO END DO i = (nx-1)/2+1 CALL wrigar(tem1,1,nx,1,ny,1,nz,i,i,1,(ny-1)/2,1,nz,ch,.0,2) RETURN END SUBROUTINE checkwy ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKSHX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkshx(s, nx,ny,nz, & 13,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a scalar point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! s An array field defined at the scalar point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: s (nx,ny,nz) ! An array field defined at ! the scalar point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO j=jbgn,jend DO i=ibgn,(nx-1)/2+1 tem1(i,j,k)=s( nx-i,j,k) - s(i,j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,(nx-1)/2,1,ny,jbgn,jend,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'sdmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'sdmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,(nx-1)/2,jbgn,jend,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkshx ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKUHX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkuhx(u, nx,ny,nz, & 8,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a u-point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue ! 11/20/91 ! ! MODIFICATION HISTORY: ! ! 5/06/92 (M. Xue) ! Added full documentation. ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! u An array field defined at the u grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: u (nx,ny,nz) ! An array field defined at the u ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO j=jbgn,jend DO i=ibgn,(nx-1)/2+1 tem1(i,j,k)=u( nx -i+1, j,k) + u(i, j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,(nx-1)/2,1,ny,jbgn,jend,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'udmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'udmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,(nx-1)/2,jbgn,jend,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkuhx ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKVHX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkvhx(v, nx,ny,nz, & 8,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a v-point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue ! 11/20/91. ! ! MODIFICATION HISTORY: ! ! 5/06/92 (M. Xue) ! Added full documentation. ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! v An array field defined at the v grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: v (nx,ny,nz) CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO j=jbgn,jend DO i=ibgn,(nx-1)/2+1 tem1(i,j,k)=v( nx-i,j,k) - v(i,j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,(nx-1)/2,1,ny,jbgn,jend,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'vdmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'vdmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,(nx-1)/2,jbgn,jend,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkvhx ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKWHX ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkwhx(w, nx,ny,nz, & 9,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the west-east symmetry of a field defined at a w-point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue ! 11/20/91. ! ! MODIFICATION HISTORY: ! ! 5/06/92 (M. Xue) ! Added full documentation. ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! w An array field defined at the w grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: w (nx,ny,nz) ! An array field defined at the w ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO j=jbgn,jend DO i=ibgn,(nx-1)/2+1 tem1(i,j,k)=w( nx-i,j,k) - w(i,j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,(nx-1)/2,1,ny,jbgn,jend,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'wdmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'wdmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,(nx-1)/2,jbgn,jend,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkwhx ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKSHY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkshy(s, nx,ny,nz, & 13,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a scalar point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! s An array field defined at the scalar point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: s (nx,ny,nz) ! An array field defined at the ! scalar point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO i=ibgn,iend DO j=jbgn,(ny-1)/2+1 tem1(i,j,k)=s( i,ny-j,k) - s(i,j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,iend,1,ny,jbgn,(ny-1)/2,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'sdmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'sdmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,iend,jbgn,(ny-1)/2,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkshy ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKUHY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkuhy(u, nx,ny,nz, & 8,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a u-point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! u An array field defined at the u grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: u (nx,ny,nz) ! An array field defined at the u ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO i=ibgn,iend DO j=jbgn,(ny-1)/2+1 tem1(i,j,k)=u( i,ny-j,k) - u(i, j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,iend,1,ny,ibgn,(ny-1)/2,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'udmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'udmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,iend,ibgn,(ny-1)/2,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkuhy ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKVHY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkvhy(v, nx,ny,nz, & 8,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a v-point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! v An array field defined at the v grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: v (nx,ny,nz) ! An array field defined at the v ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO i=ibgn,iend DO j=jbgn,(ny-1)/2+1 tem1(i,j,k)=v( i,ny-j+1,k) + v(i,j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,iend,1,ny,jbgn,(ny-1)/2,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'vdmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'vdmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,iend,jbgn,(ny-1)/2,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkvhy ! ! !################################################################## !################################################################## !###### ###### !###### SUBROUTINE CHECKWHY ###### !###### ###### !###### Developed by ###### !###### Center for Analysis and Prediction of Storms ###### !###### University of Oklahoma ###### !###### ###### !################################################################## !################################################################## ! SUBROUTINE checkwhy(w, nx,ny,nz, & 9,2 ibgn,iend,jbgn,jend,kbgn,kend, & ch, tem1) ! !----------------------------------------------------------------------- ! ! PURPOSE: ! ! Check the south-north symmetry of a field defined at a w-point ! on the level containing the maximum magnitude of that field. ! !----------------------------------------------------------------------- ! ! AUTHOR: Ming Xue & Hao Jin ! 4/20/93. ! ! MODIFICATION HISTORY: ! ! 02/12/1996 (Yuhe Liu) ! Added the beginning and ending index for each direction ! !----------------------------------------------------------------------- ! ! INPUT : ! ! w An array field defined at the w grid point. ! ! nx Number of grid points in the x-direction (east/west) ! ny Number of grid points in the y-direction (north/south) ! nz Number of grid points in the vertical ! ! ibgn Beginning index in x-direction ! iend Ending index in x-direction ! jbgn Beginning index in y-direction ! jend Ending index in y-direction ! kbgn Beginning index in z-direction ! kend Ending index in z-direction ! ! OUTPUT: ! ! None. ! ! WORK ARRAY: ! ! tem1 Temporary work array. ! !----------------------------------------------------------------------- ! ! !----------------------------------------------------------------------- ! ! Variable Declarations. ! !----------------------------------------------------------------------- ! IMPLICIT NONE INTEGER :: nx,ny,nz ! Number of grid points in 3 directions INTEGER :: ibgn,iend,jbgn,jend,kbgn,kend REAL :: w (nx,ny,nz) ! An array field defined at the w ! grid point CHARACTER (LEN=*) :: ch REAL :: tem1(nx,ny,nz) INTEGER :: i,j,k REAL :: amin, amax INTEGER :: imax,jmax,kmax,imin,jmin,kmin ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! ! Beginning of executable code... ! !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! DO k=kbgn,kend DO i=ibgn,iend DO j=jbgn,(ny-1)/2+1 tem1(i,j,k)=w( i,ny-j,k) - w(i,j,k) END DO END DO END DO CALL a3dmax(tem1,1,nx,ibgn,iend,jbgn,ny,1,(ny-1)/2,1,nz,kbgn,kend, & amax,amin, imax,jmax,kmax, imin,jmin,kmin) WRITE(6,'(/2(1x,a,f13.7,3(a,i3)))') & 'wdmin =',amin,' at i=',imin,', j=',jmin,', k=',kmin, & 'wdmax =',amax,' at i=',imax,', j=',jmax,', k=',kmax IF ( ABS(amax) > ABS(amin) ) THEN k=kmax ELSE k=kmin END IF CALL wrigar(tem1,1,nx,1,ny,1,nz,ibgn,iend,jbgn,(ny-1)/2,k,k, & ch,0.0,2) RETURN END SUBROUTINE checkwhy