/wrfv2_fire/dyn_em/module_avgflx_em.F
FORTRAN Legacy | 135 lines | 106 code | 24 blank | 5 comment | 2 complexity | c500545f68ad288c844bcc057fe8f541 MD5 | raw file
Possible License(s): AGPL-1.0
- !WRF:MODEL_LAYER:DYNAMICS
- !
- MODULE module_avgflx_em
- USE module_bc
- USE module_model_constants
- USE module_wrf_error
- CONTAINS
- !-------------------------------------------------------------------------------
- subroutine zero_avgflx(avgflx_rum,avgflx_rvm,avgflx_wwm, &
- & ids, ide, jds, jde, kds, kde, &
- & ims, ime, jms, jme, kms, kme, &
- & its, ite, jts, jte, kts, kte, do_cu, &
- & avgflx_cfu1,avgflx_cfd1,avgflx_dfu1,avgflx_efu1,avgflx_dfd1,avgflx_efd1 )
- IMPLICIT NONE
- INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte
- LOGICAL, INTENT(IN) :: do_cu
- REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(INOUT) :: &
- avgflx_rum,avgflx_rvm,avgflx_wwm
- REAL, OPTIONAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(INOUT) :: &
- avgflx_cfu1,avgflx_cfd1,avgflx_dfu1,avgflx_efu1,avgflx_dfd1,avgflx_efd1
- INTEGER :: i,j,k
- DO j=jts,jte
- DO k=kts,kte
- DO i=its,ite
- avgflx_rum(i,k,j) = 0.
- avgflx_rvm(i,k,j) = 0.
- avgflx_wwm(i,k,j) = 0.
- end DO
- end DO
- end DO
- if (do_cu .and. &
- & present(avgflx_cfu1) .and. present(avgflx_cfd1) .and. present(avgflx_dfu1) &
- & .and. present(avgflx_efu1) .and. present(avgflx_dfd1) .and. present(avgflx_efd1) ) then
- DO j=jts,jte
- DO k=kts,kte
- DO i=its,ite
- avgflx_cfu1(i,k,j) = 0.
- avgflx_cfd1(i,k,j) = 0.
- avgflx_dfu1(i,k,j) = 0.
- avgflx_efu1(i,k,j) = 0.
- avgflx_dfd1(i,k,j) = 0.
- avgflx_efd1(i,k,j) = 0.
- end DO
- end DO
- end DO
- end if
- return
- end subroutine zero_avgflx
- subroutine upd_avgflx(avgflx_count,avgflx_rum,avgflx_rvm,avgflx_wwm, &
- & ru_m, rv_m, ww_m, &
- & ids, ide, jds, jde, kds, kde, &
- & ims, ime, jms, jme, kms, kme, &
- & its, ite, jts, jte, kts, kte, do_cu, &
- & cfu1,cfd1,dfu1,efu1,dfd1,efd1, &
- & avgflx_cfu1,avgflx_cfd1,avgflx_dfu1,avgflx_efu1,avgflx_dfd1,avgflx_efd1 )
- IMPLICIT NONE
- INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte
- INTEGER , INTENT(IN) :: avgflx_count
- LOGICAL, INTENT(IN) :: do_cu
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme) , INTENT(IN) :: ru_m, &
- rv_m, &
- ww_m
- REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(INOUT) :: &
- avgflx_rum,avgflx_rvm,avgflx_wwm
- REAL, OPTIONAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(IN) :: &
- cfu1,cfd1,dfu1,efu1,dfd1,efd1
- REAL, OPTIONAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , INTENT(INOUT) :: &
- avgflx_cfu1,avgflx_cfd1,avgflx_dfu1,avgflx_efu1,avgflx_dfd1,avgflx_efd1
- INTEGER :: i,j,k
- REAL :: local_count
- local_count = real(avgflx_count)
- DO j=jts,jte
- DO k=kts,kte
- DO i=its,ite
- avgflx_rum(i,k,j) = (local_count*avgflx_rum(i,k,j) + ru_m(i,k,j))/(local_count+1.)
- avgflx_rvm(i,k,j) = (local_count*avgflx_rvm(i,k,j) + rv_m(i,k,j))/(local_count+1.)
- avgflx_wwm(i,k,j) = (local_count*avgflx_wwm(i,k,j) + ww_m(i,k,j))/(local_count+1.)
- end DO
- end DO
- end DO
- if (do_cu .and. &
- & present(avgflx_cfu1) .and. present(avgflx_cfd1) .and. present(avgflx_dfu1) &
- & .and. present(avgflx_efu1) .and. present(avgflx_dfd1) .and. present(avgflx_efd1) &
- & .and. present(cfu1) .and. present(cfd1) .and. present(dfu1) &
- & .and. present(efu1) .and. present(dfd1) .and. present(efd1) ) then
- DO j=jts,jte
- DO k=kts,kte
- DO i=its,ite
- avgflx_cfu1(i,k,j) = (local_count*avgflx_cfu1(i,k,j) + &
- & cfu1(i,k,j)) / (local_count+1.)
- avgflx_cfd1(i,k,j) = (local_count*avgflx_cfd1(i,k,j) + &
- & cfd1(i,k,j)) / (local_count+1.)
- avgflx_dfu1(i,k,j) = (local_count*avgflx_dfu1(i,k,j) + &
- & dfu1(i,k,j)) / (local_count+1.)
- avgflx_efu1(i,k,j) = (local_count*avgflx_efu1(i,k,j) + &
- & efu1(i,k,j)) / (local_count+1.)
- avgflx_dfd1(i,k,j) = (local_count*avgflx_dfd1(i,k,j) + &
- & dfd1(i,k,j)) / (local_count+1.)
- avgflx_efd1(i,k,j) = (local_count*avgflx_efd1(i,k,j) + &
- & efd1(i,k,j)) / (local_count+1.)
- end DO
- end DO
- end DO
- end if
- return
- end subroutine upd_avgflx
- end MODULE module_avgflx_em