Changeset 1762 in lmdz_wrf for trunk/tools/module_ForDiagnostics.f90


Ignore:
Timestamp:
Jan 24, 2018, 3:54:22 PM (7 years ago)
Author:
lfita
Message:

Adding:

`mrso': total soil moisture
`slw': total liquid water

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/module_ForDiagnostics.f90

    r1761 r1762  
    533533
    534534  END SUBROUTINE compute_psl_ptarget4d2
     535
     536  SUBROUTINE compute_massvertint1D(var, mutot, dz, deta, integral)
     537    ! Subroutine to vertically integrate a 1D variable in eta vertical coordinates
     538
     539    IMPLICIT NONE
     540
     541    INTEGER, INTENT(in)                                  :: dz
     542    REAL(r_k), INTENT(in)                                :: mutot
     543    REAL(r_k), DIMENSION(dz), INTENT(in)                 :: var, deta
     544    REAL(r_k), INTENT(out)                               :: integral
     545
     546! Local
     547    INTEGER                                              :: k
     548
     549!!!!!!! Variables
     550! var: vertical variable to integrate (assuming kgkg-1)
     551! mutot: total dry-air mass in column
     552! dz: vertical dimension
     553! deta: eta-levels difference between full eta-layers
     554
     555    fname = 'compute_massvertint1D'
     556
     557!    integral=0.
     558!    DO k=1,dz
     559!      integral = integral + var(k)*deta(k)
     560!    END DO
     561     integral = SUM(var*deta)
     562
     563    integral=integral*mutot/g
     564
     565    RETURN
     566
     567  END SUBROUTINE compute_massvertint1D
     568
     569  SUBROUTINE compute_zint4D(var4D, dlev, zweight, d1, d2, d3, d4, int3D)
     570    ! Subroutine to vertically integrate a 4D variable in any vertical coordinates
     571
     572    IMPLICIT NONE
     573
     574    INTEGER, INTENT(in)                                  :: d1,d2,d3,d4
     575    REAL(r_k), DIMENSION(d1,d2,d3,d4), INTENT(in)        :: var4D, dlev, zweight
     576    REAL(r_k), DIMENSION(d1,d2,d4), INTENT(out)          :: int3D
     577
     578! Local
     579    INTEGER                                              :: i,j,l
     580
     581!!!!!!! Variables
     582! var4D: vertical variable to integrate
     583! dlev: height of layers
     584! zweight: weight for each level to be applied (=1. for no effect)
     585
     586    fname = 'compute_zint4D'
     587
     588    DO i=1,d1
     589      DO j=1,d2
     590        DO l=1,d4
     591          CALL compute_vertint1D(var4D(i,j,:,l),d3, dlev(i,j,:,l), zweight(i,j,:,l), &
     592            int3D(i,j,l))
     593        END DO
     594      END DO
     595    END DO
     596
     597    RETURN
     598
     599  END SUBROUTINE compute_zint4D
     600
     601  SUBROUTINE compute_vertint1D(var, dz, deta, zweight, integral)
     602    ! Subroutine to vertically integrate a 1D variable in any vertical coordinates
     603
     604    IMPLICIT NONE
     605
     606    INTEGER, INTENT(in)                                  :: dz
     607    REAL(r_k), DIMENSION(dz), INTENT(in)                 :: var, deta, zweight
     608    REAL(r_k), INTENT(out)                               :: integral
     609
     610! Local
     611    INTEGER                                              :: k
     612
     613!!!!!!! Variables
     614! var: vertical variable to integrate
     615! dz: vertical dimension
     616! deta: eta-levels difference between layers
     617! zweight: weight for each level to be applied (=1. for no effect)
     618
     619    fname = 'compute_vertint1D'
     620
     621!    integral=0.
     622!    DO k=1,dz
     623!      integral = integral + var(k)*deta(k)
     624!    END DO
     625    integral = SUM(var*deta*zweight)
     626
     627    RETURN
     628
     629  END SUBROUTINE compute_vertint1D
    535630
    536631  SUBROUTINE compute_tv4d(ta,qv,tv,d1,d2,d3,d4)
Note: See TracChangeset for help on using the changeset viewer.