Changeset 2642 in lmdz_wrf


Ignore:
Timestamp:
Jun 28, 2019, 9:40:39 PM (5 years ago)
Author:
lfita
Message:

Adding:

  • `compute_front_R04d3': Subroutine to compute presence of a front following Rodrigues et al.(2004)
  • `var_front_R04': Subroutine to compute presence of a front following Rodrigues et al.(2004)
Location:
trunk/tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/module_ForDiagnostics.f90

    r2619 r2642  
    3232! compute_fog_RUC: Computation of fog and visibility following RUC method Smirnova, (2000)
    3333! compute_fog_FRAML50: fog and visibility following Gultepe and Milbrandt, (2010)
     34! compute_front_R04d3: Subroutine to compute presence of a front following Rodrigues et al.(2004)
    3435! compute_massvertint1D: Subroutine to vertically integrate a 1D variable in eta vertical coordinates
    3536! compute_psl_ecmwf: Compute sea level pressure using ECMWF method following Mats Hamrud and Philippe Courtier [Pa]
     
    15491550  END SUBROUTINE compute_tws_RK4
    15501551
     1552  SUBROUTINE compute_front_R04d3(d1, d2, d3, tas, uas, vas, dsx, dsy, front)
     1553! Subroutine to compute presence of a front following Rodrigues et al.(2004), Rev. Bras.  Geofis. 22,
     1554!    135-151
     1555
     1556    IMPLICIT NONE
     1557
     1558    INTEGER, INTENT(in)                                  :: d1, d2, d3
     1559    REAL(r_k), DIMENSION(d1,d2,d3), INTENT(in)           :: tas, uas, vas, dsx, dsy
     1560    INTEGER, DIMENSION(d1,d2,d3), INTENT(out)            :: front
     1561 
     1562! Local
     1563
     1564!!!!!!! Variables
     1565! tas: 2-m air temperature [K]
     1566! uas: 10-m eastward wind [ms-1]
     1567! vas: 10-m northward wind [ms-1]
     1568! dxs: grid spacing betweeen grid points along x-axis [m]
     1569! dys: grid spacing betweeen grid points along y-axis [m]
     1570
     1571    fname = 'compute_front_R04d3'
     1572
     1573    CALL var_front_R04(d1, d2, d3, tas, uas, vas, dsx, dsy, front)
     1574
     1575    RETURN
     1576
     1577  END SUBROUTINE compute_front_R04d3
     1578
    15511579END MODULE module_ForDiagnostics
  • trunk/tools/module_ForDiagnosticsVars.f90

    r2387 r2642  
    3434! var_fog_RUC: fog and visibility following RUC method Smirnova, (2000)
    3535! var_fog_FRAML50: fog and visibility following Gultepe and Milbrandt, (2010)
     36! var_front_R04: Subroutine to compute presence of a front following Rodrigues et al.(2004)
    3637! var_potevap_orPM: potential evapotranspiration following Penman-Monteith formulation implemented in ORCHIDEE
    3738! var_psl_ecmwf: sea level pressure using ECMWF method following Mats Hamrud and Philippe Courtier [Pa]
     
    19761977  END SUBROUTINE Svar_tws_S11
    19771978
     1979  SUBROUTINE var_front_R04(dx, dy, dt, tas, uas, vas, ddx, ddy, front)
     1980! Subroutine to compute presence of a front following
     1981!   Rodrigues et al.(2004), Rev. Bras.  Geofis. 22, 135-151, doi: 10.1590/S0102-261X2004000200004
     1982
     1983    IMPLICIT NONE
     1984
     1985    INTEGER, INTENT(in)                                  :: dx, dy, dt
     1986    REAL(r_k), DIMENSION(dx,dy), INTENT(in)              :: ddx, ddy
     1987    REAL(r_k), DIMENSION(dx,dy,dt), INTENT(in)           :: tas, uas, vas
     1988    INTEGER, DIMENSION(dx,dy,dt), INTENT(out)            :: front
     1989
     1990! Local
     1991    INTEGER                                              :: i, j, l
     1992    REAL, DIMENSION(dx,dy,dt)                            :: dt1uas, dt1vas, dt1tas, dc1wss, d2tas
     1993
     1994!!!!!!! Variables
     1995! tas: 2-m temperature [K]
     1996! dd[x/y]: real distance between grid points along x and y axes [m]
     1997! uas: 10m eastward wind speed [ms-1]
     1998! vas: 10m northward wind speed [ms-1]
     1999! front: presence of a front in the grid point [0: no, 1: yes]
     2000
     2001    fname = 'var_front_R04'
     2002
     2003    dt1uas = zeroRK
     2004    dt1vas = zeroRK
     2005    dt1tas = zeroRK
     2006    dc1wss = zeroRK
     2007    d2tas = zeroRK
     2008
     2009    ! 1-time-step derivatives
     2010    DO l=1,dt-1
     2011      dt1tas(:,:,l) = ABS(tas(:,:,l+1) - tas(:,:,l))
     2012      dt1vas(:,:,l) = ABS(vas(:,:,l+1) - vas(:,:,l))
     2013    END DO
     2014
     2015    ! First order curl
     2016    DO l=1,dt-1
     2017      CALL curl2D_1o(dx,dy,ddx,ddy,uas(:,:,l),vas(:,:,l),dc1wss(:,:,l))
     2018    END DO
     2019
     2020    ! 2-time-step centered derivatives
     2021    DO l=2,dt-1
     2022      d2tas(:,:,l) = ABS(tas(:,:,l+1) - tas(:,:,l-1))
     2023    END DO
     2024
     2025    front = 0
     2026    DO l=1,dt
     2027      DO i=1,dx
     2028        DO j=1,dy
     2029          IF ( (dc1wss(i,j,l) /= zeroRK) .AND. (d2tas(i,j,l) > 0.5) ) front(i,j,l) = 1
     2030        END DO
     2031      END DO
     2032    END DO
     2033 
     2034    RETURN
     2035
     2036  END SUBROUTINE var_front_R04
     2037
    19782038END MODULE module_ForDiagnosticsVars
Note: See TracChangeset for help on using the changeset viewer.