Commit 8eb4d9c6 authored by William D. Fullmer's avatar William D. Fullmer
Browse files

lgw: include some global statistics in usr routines

parent 193b76fa
Loading
Loading
Loading
Loading
+319 B

File added.

No diff preview for this file type.

+12 −4
Original line number Diff line number Diff line
@@ -31,7 +31,8 @@
      Use usr
      USE compar,    ONLY: myPE, PE_IO
      USE constant,  ONLY: C 
      USE param1,   ONLY: UNDEFINED
      USE run,       ONLY: TIME
!     USE param1,    ONLY: UNDEFINED

      IMPLICIT NONE
!-----------------------------------------------
@@ -47,10 +48,17 @@
!
!  Insert user-defined code here
!
      !usr_time_write = max(0.127d0, time) - 1.0d-14
      usr_time_write = 0.0d0
      ga_phi_pdf(:)  = 0.0d0

      IF(myPE .NE. PE_IO) RETURN
      OPEN(UNIT=888,FILE='uio_stats.dat',STATUS='UNKNOWN')
      OPEN(UNIT=889,FILE='drift.dat',STATUS='UNKNOWN')
      OPEN(UNIT=888,FILE='global_stats.dat',STATUS='UNKNOWN')
      OPEN(UNIT=887,FILE='phi_pdf.dat',STATUS='UNKNOWN')
      CLOSE(887)
      CLOSE(888)
      CLOSE(889)


      RETURN
+85 −11
Original line number Diff line number Diff line
@@ -33,8 +33,9 @@
      USE mpi_utility
      USE constant,  ONLY: C
      USE run,       ONLY: TIME
!!      USE output,    ONLY: USR_DT
      USE fldvar,    ONLY: EP_g, V_g, V_s !Theta_m
      USE output,    ONLY: USR_DT
      USE fldvar,    ONLY: U_g, V_g, W_g, EP_g 
      USE fldvar,    ONLY: U_s, V_s, W_s, Theta_m
      USE geometry,  ONLY: VOL
      USE compar,    ONLY: myPE, PE_IO
!!      USE bc,        ONLY: BC_V_G 
@@ -50,16 +51,21 @@
!
!  Define local variables here
!
      INTEGER :: ijk, ijmk
      INTEGER :: ijk, imjk, ijmk, ijkm, phiii
      DOUBLE PRECISION :: phijk
      DOUBLE PRECISION :: Vol_tot, flux_tot_y
      DOUBLE PRECISION :: ga_vg, ga_us, ga_vs, ga_ws !global average
      DOUBLE PRECISION :: ga_uus, ga_vvs, ga_wws
      DOUBLE PRECISION :: ga_slip, ga_temp, ga_kapp, ga_phip 
!
!  Include files defining statement functions here
!
!
!  Insert user-defined code here
!  I
!
!     data analysis & printing 
 8882 FORMAT (2(E16.8, 2x))
 8882 FORMAT (4(E16.8, 2x))
 8884 FORMAT (4(E16.8, 2x))

!     Normalize vertical velocity variables to Vk' = Vk - jy
!     ie ' variables are relative to the zero net flux plane
@@ -91,19 +97,87 @@
        ENDDO
      ENDIF 

!     print
      IF(myPE .EQ. PE_IO) THEN
        OPEN(UNIT=889,FILE='drift.dat',STATUS='OLD',ACCESS='APPEND')
        WRITE(889,8882) TIME, flux_tot_y
        CLOSE(889)
      ENDIF


!     check for usr IO time 
!!      IF (TIME .GT. time_usr_write) THEN
!!!       increment next time to write user data
!!        time_usr_write = time_usr_write + USR_DT(1)
!!      ENDIF
      IF (TIME .LT. usr_time_write) RETURN
!     increment next time to write user data
      usr_time_write = usr_time_write + USR_DT(1)

      ga_vg   = 0.0d0
      ga_us   = 0.0d0 
      ga_vs   = 0.0d0
      ga_ws   = 0.0d0
      ga_uus  = 0.0d0 
      ga_vvs  = 0.0d0
      ga_wws  = 0.0d0
      ga_temp = 0.0d0
      ga_phip = 0.0d0
      DO IJK = IJKSTART3, IJKEND3
        IF (.NOT.IS_ON_myPE_wobnd(I_OF(IJK),J_OF(IJK),K_OF(IJK))) CYCLE
        IF (.NOT.FLUID_AT(IJK)) CYCLE
          ImJK = IM_OF(IJK)
          IJmK = JM_OF(IJK)
          IJKm = KM_OF(IJK)

          ga_vg   = ga_vg + 0.5d0*VOL(IJK) &
                  * EP_G(IJK)*(V_G(IJK) + V_G(IJmK))
          ga_us   = ga_us  + 0.5d0 * VOL(IJK) &
                  * (1.0d0 - EP_G(IJK))*(U_S(IJK,1) + U_S(ImJK,1))
          ga_vs   = ga_vs  + 0.5d0 * VOL(IJK) &
                  * (1.0d0 - EP_G(IJK))*(V_S(IJK,1) + V_S(IJmK,1))
          ga_ws   = ga_ws  + 0.5d0 * VOL(IJK) &
                  * (1.0d0 - EP_G(IJK))*(W_S(IJK,1) + W_S(IJKm,1)) 
          ga_uus  = ga_uus + 0.25d0 * VOL(IJK) &
                  * (1.0d0 - EP_G(IJK))*(U_S(IJK,1) + U_S(ImJK,1))**2
          ga_vvs  = ga_vvs + 0.25d0 * VOL(IJK) &
                  * (1.0d0 - EP_G(IJK))*(V_S(IJK,1) + V_S(IJmK,1))**2
          ga_wws  = ga_wws + 0.25d0 * VOL(IJK) &
                  * (1.0d0 - EP_G(IJK))*(W_S(IJK,1) + W_S(IJKm,1))**2
          ga_temp = ga_temp + VOL(IJK)*EP_G(IJK)*Theta_m(IJK,1)
          ga_phip = ga_phip + VOL(IJK)*(EP_G(IJK) - 0.9d0)**2 !hardcode ave epg == 0.9
!         Vol_tot = Vol_tot + VOL(IJK) 
          IF (EP_G(IJK) .GT. 0.35d0) THEN 
            phiii = INT((1.0d0 - EP_G(IJK))/5.0d-3) + 1
            ga_phi_pdf(phiii) = ga_phi_pdf(phiii) + 1.0d0
          ENDIF
      ENDDO

      CALL GLOBAL_ALL_SUM(ga_vg)
      CALL GLOBAL_ALL_SUM(ga_us)
      CALL GLOBAL_ALL_SUM(ga_vs)
      CALL GLOBAL_ALL_SUM(ga_ws)
      CALL GLOBAL_ALL_SUM(ga_uus)
      CALL GLOBAL_ALL_SUM(ga_vvs)
      CALL GLOBAL_ALL_SUM(ga_wws)
      CALL GLOBAL_ALL_SUM(ga_temp)
      CALL GLOBAL_ALL_SUM(ga_phip)
      
      ga_vg   = (ga_vg / Vol_tot) / 0.9d0     !hardcode ave epg == 0.9 
      ga_us   = (ga_us / Vol_tot) / 0.1d0     !hardcode ave epg == 0.9 
      ga_vs   = (ga_vs / Vol_tot) / 0.1d0     !hardcode ave epg == 0.9 
      ga_ws   = (ga_ws / Vol_tot) / 0.1d0     !hardcode ave epg == 0.9 
      ga_uus  = (ga_uus/ Vol_tot) / 0.1d0     !hardcode ave epg == 0.9 
      ga_vvs  = (ga_vvs/ Vol_tot) / 0.1d0     !hardcode ave epg == 0.9 
      ga_wws  = (ga_wws/ Vol_tot) / 0.1d0     !hardcode ave epg == 0.9 
      ga_temp = (ga_temp / Vol_tot) / 0.1d0   !hardcode ave epg == 0.9 
      ga_phip = ga_phip / Vol_tot

      ga_slip = ga_vg - ga_vs
      ga_kapp = (ga_uus   + ga_vvs   + ga_wws   &
              -  ga_us**2 - ga_vs**2 - ga_ws**2 & 
              +  3.0d0*ga_temp) / 2.0d0

!     print
      IF(myPE .NE. PE_IO) RETURN
      OPEN(UNIT=888,FILE='uio_stats.dat',STATUS='OLD',ACCESS='APPEND')
      WRITE(888,8882) TIME, flux_tot_y
      OPEN(UNIT=888,FILE='global_stats.dat',STATUS='OLD',ACCESS='APPEND')
      WRITE(888,8884) TIME, ga_slip, ga_kapp, ga_phip
      CLOSE(888)

      RETURN
+63 −0
Original line number Diff line number Diff line
!vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
!                                                                      C
!  Module name: USR3                                                   C
!  Purpose: This routine is called after the time loop ends and is
!           user-definable.  The user may insert code in this routine
!           or call appropriate user defined subroutines.
!           This routine is not called from an IJK loop, hence
!           all indices are undefined.                                 C
!                                                                      C
!  Author:                                            Date: dd-mmm-yy  C
!  Reviewer:                                          Date: dd-mmm-yy  C
!                                                                      C
!  Revision Number:                                                    C
!  Purpose:                                                            C
!  Author:                                            Date: dd-mmm-yy  C
!  Reviewer:                                          Date: dd-mmm-yy  C
!                                                                      C
!  Literature/Document References:                                     C
!                                                                      C
!  Variables referenced:                                               C
!  Variables modified:                                                 C
!                                                                      C
!  Local variables:                                                    C
!                                                                      C
!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
!
      SUBROUTINE USR3

      USE USR
      USE compar,    ONLY: myPE, PE_IO
      USE constant,  ONLY: C
!     USE run,       ONLY: TIME

      IMPLICIT NONE

!-----------------------------------------------
!
!  Include files defining common blocks here
!
!
!  Define local variables here
!
      INTEGER :: phiii
      DOUBLE PRECISION :: Ncount
!
!  Include files defining statement functions here
!
!
!  Normalize probability distribution and print it
!
 8882 FORMAT (2(E16.8, 2x))

      IF(myPE .NE. PE_IO) RETURN
      OPEN(UNIT=887,FILE='phi_pdf.dat',STATUS='OLD',ACCESS='APPEND')
      Ncount = SUM(ga_phi_pdf(:))
      ga_phi_pdf(:) = ga_phi_pdf(:) / Ncount
      DO phiii = 1, 130
        WRITE(887,8882) DBLE(phiii)*5.0d-3 - 2.5d-3, ga_phi_pdf(phiii)
      ENDDO
      CLOSE(887)

      RETURN
      END SUBROUTINE USR3
+20 −0
Original line number Diff line number Diff line
      MODULE usr
!
!       Declare the user-defined namelist variables (usrnlst.inc) in
!       this module.
!       Also Include user-defined variables in this module.  To access
!       the
!       variables from a subroutine add the statement "Use usr".  If
!       allocatable
!       arrays are defined in this module allocate them in usr0.  To
!       turn on the
!       user defined subroutines (usr0, usr1, and usr2) set keyword
!       CALL_USR to true.

        INTEGER :: Nusr

        DOUBLE PRECISION :: usr_time_write
        DOUBLE PRECISION :: ga_phi_pdf(130)


      END MODULE usr