Hurricane WRF (HWRF) | FAQ's

First, refer to the documentation on this website. If that doesn't answer your question, then write to HWRF forum.

Please refer to our data FAQ.

Yes. The GFS ensemble is used as input to GSI during data assimilation. When the GFS ensemble is available, GSI runs in ensemble-variational hybrid data assimilation mode and uses flow-dependent information to create the background error covariance matrix. Conversely, when the GFS ensemble is not available, GSI uses the previously generated static background error covariance.

Please refer to the HWRF v4.0 Users Guide (Appendix B: Example of Computational Resources and Notes for NCAR-Cheyenne) for recommended modules and resources to run on Cheyenne.

Background: In HWRF users can output accumulated temperature change due to the total diabatic heating in its microphysics scheme. The output variable is named “Train” with a long name “Accum stratiform temp tendency” defined in Registry.NMM. However, sometimes it may be desirable to output the accumulated or instantaneous temperature change due to an individual microphysics process. Therefore, the question is how to output the diabatic heating terms (temperature change) due to an individual microphysical process, for example, the ice melting?

 

Methods.

To output the instantaneous total or individual diabatic heating terms.

Define a new variable train_ins in Registry.NMM

state  real   train_ins ijk   dyn_nmm     1    -    rh023     "TRAIN_INS" "Instantaneous stratiform temp tendency"    "K s-1"
 
In dyn_nmm/solve_nmm.F, add the new variable “train_ins” to the call to the subroutine “GSMDRIVE”
 
        CALL GSMDRIVE(grid%ntsd,GRID%DT,GRID%NPHS,N_MOIST                   &
     &               ,grid%dx_nmm(ITS,JC),GRID%DY,grid%sm,grid%hbm2,grid%fis               &
     &               ,grid%deta1,grid%deta2,grid%aeta1,grid%aeta2,grid%eta1,grid%eta2                &
     &               ,grid%pdtop,grid%pt,grid%pd,grid%res,grid%pint,grid%t,grid%q,grid%cwm,grid%train               &
     &               ,grid%train_ins                                   &
     &               ,MOIST,SCALAR,NUM_SCALAR                          &
     &               ,grid%f_ice,grid%f_rain,grid%f_rimef,grid%sr                          &
     &               ,grid%prec,grid%acprec,grid%avrain                               &
     &               ,grid%mp_restart_state                                 &
     &               ,grid%tbpvs_state                                      &
     &               ,grid%tbpvs0_state                                     &
 
  1. Accordingly, you need to add the new variable to subroutine GSMDRIVE in the file dyn_nmm/module_PHYSICS_CALLS.F, and declare (not shown) the variable as an array

    And calculate train as, for example for total diabatic heating:

      SUBROUTINE GSMDRIVE(NTSD,DT,NPHS,N_MOIST                          &
     &                   ,DX,DY,SM,HBM2,FIS                             &
     &                   ,DETA1,DETA2,AETA1,AETA2,ETA1,ETA2             &
     &                   ,PDTOP,PT,PD,RES,PINT,T,Q,CWM,TRAIN,TRAIN_INS  &
     &                   ,MOIST,SCALAR,N_SCALAR                         &
     &                   ,F_ICE,F_RAIN,F_RIMEF,SR                       &
 
Also, declare TRAIN_INS under the subroutine
 
      REAL,DIMENSION(IMS:IME,JMS:JME,KMS:KME),INTENT(INOUT) :: CWM,Q    &
     &                                                        ,T,TRAIN  &
     &                                                      ,TRAIN_INS
 
Get the instantaneous tendency within this code block:
!-----------------------------------------------------------------------
!***  UPDATE TEMPERATURE, SPECIFIC HUMIDITY, CLOUD WATER, AND HEATING.
!-----------------------------------------------------------------------
!$omp parallel do                                                       &
!$omp& private(i,iendx,j,k,tnew)
      DO K=KTS,KTE
        DO J=MYJS2,MYJE2
          IENDX=MYIE1
          IF(E_BDY.AND.MOD(J,2)==0)IENDX=IENDX-1
          DO I=MYIS1,IENDX
            TNEW=TH_PHY(I,K,J)*PI_PHY(I,K,J)
            TRAIN(I,J,K)=TRAIN(I,J,K)+(TNEW-T(I,J,K))*RDTPHS
            TRAIN_INS(I,J,K)=(TNEW-T(I,J,K))*RDTPHS
            T(I,J,K)=TNEW
            Q(I,J,K)=MOIST_TRANS(I,K,J,P_QV)/(1.+MOIST_TRANS(I,K,J,P_QV))
            CWM(I,J,K)=CWM_PHY(I,K,J)
          ENDDO
        ENDDO
      ENDDO
!