SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/average1_cti.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE AVERAGE1_CTI(KLUOUT,PLAT,PLON,PVALUE)
00003 !     ################################################
00004 !
00005 !!**** *AVERAGE1_CTI* computes the sum of cti, squared cti
00006 !!                    and subgrid cti characteristics
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!    METHOD
00012 !!    ------
00013 !!   
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!
00027 !!    B. Decharme         Meteo-France
00028 !!
00029 !!    MODIFICATION
00030 !!    ------------
00031 !!
00032 !!    Original    06/2009
00033 !!
00034 !----------------------------------------------------------------------------
00035 !
00036 !*    0.     DECLARATION
00037 !            -----------
00038 !
00039 USE MODD_PGDWORK,       ONLY : XSUMVAL, XSUMVAL2, XSUMVAL3, NSIZE, &
00040                                   XMAX_WORK, XMIN_WORK   
00041 !
00042 USE MODI_GET_MESH_INDEX
00043 USE MODD_POINT_OVERLAY
00044 !!
00045 !
00046 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00047 USE PARKIND1  ,ONLY : JPRB
00048 !
00049 IMPLICIT NONE
00050 !
00051 !*    0.1    Declaration of arguments
00052 !            ------------------------
00053 !
00054 INTEGER,                 INTENT(IN)    :: KLUOUT
00055 REAL, DIMENSION(:),      INTENT(IN)    :: PLAT    ! latitude of the point to add
00056 REAL, DIMENSION(:),      INTENT(IN)    :: PLON    ! longitude of the point to add
00057 REAL, DIMENSION(:),      INTENT(IN)    :: PVALUE  ! value of the point to add
00058 !
00059 !*    0.2    Declaration of other local variables
00060 !            ------------------------------------
00061 !
00062 INTEGER, DIMENSION(SIZE(PLAT)) :: IINDEX ! mesh index of all input points
00063                                          ! 0 indicates the point is out of the domain
00064 !
00065 INTEGER :: JLOOP        ! loop index on input arrays
00066 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00067 !----------------------------------------------------------------------------
00068 !
00069 !
00070 !*    1.     Get position
00071 !            ------------
00072 ! 
00073 IF (LHOOK) CALL DR_HOOK('AVERAGE1_CTI',0,ZHOOK_HANDLE)
00074 IF (ALLOCATED(XNUM)) DEALLOCATE(XNUM)
00075 ALLOCATE(XNUM(SIZE(PLAT)))
00076 !
00077 XNUM(:)=1
00078 !
00079 DO WHILE(MAXVAL(XNUM).NE.0)
00080 !
00081   CALL GET_MESH_INDEX(KLUOUT,PLAT,PLON,IINDEX)
00082 !
00083 !*    2.     Loop on all input data points
00084 !            -----------------------------
00085 !     
00086   DO JLOOP = 1 , SIZE(PLAT)
00087 !
00088 !*    3.     Tests on position
00089 !            -----------------
00090 !     
00091     IF (IINDEX(JLOOP)==0) CYCLE
00092 !
00093 !*    4.     Summation
00094 !            ---------
00095 !
00096     NSIZE(IINDEX(JLOOP))=NSIZE(IINDEX(JLOOP))+1
00097 !
00098 !*    5.     CTI
00099 !            ---
00100 !
00101     XSUMVAL(IINDEX(JLOOP))=XSUMVAL(IINDEX(JLOOP))+PVALUE(JLOOP)
00102 !
00103 !*    6.     Square of CTI
00104 !            -------------
00105 !
00106     XSUMVAL2(IINDEX(JLOOP))=XSUMVAL2(IINDEX(JLOOP))+PVALUE(JLOOP)**2
00107 !
00108 !
00109 !*    7.     Cube of CTI
00110 !            -------------
00111 !
00112     XSUMVAL3(IINDEX(JLOOP))=XSUMVAL3(IINDEX(JLOOP))+PVALUE(JLOOP)**3
00113 !
00114 !
00115 !*    8.     Maximum CTI in the mesh
00116 !            -----------------------
00117 !
00118     XMAX_WORK(IINDEX(JLOOP))=MAX(XMAX_WORK(IINDEX(JLOOP)),PVALUE(JLOOP))
00119 !
00120 !
00121 !*    9.     Minimum CTI in the mesh
00122 !            -----------------------
00123 !
00124     XMIN_WORK(IINDEX(JLOOP))=MIN(XMIN_WORK(IINDEX(JLOOP)),PVALUE(JLOOP))
00125 !
00126 !
00127   ENDDO
00128 !  
00129 END DO
00130 IF (LHOOK) CALL DR_HOOK('AVERAGE1_CTI',1,ZHOOK_HANDLE)
00131 !
00132 !-------------------------------------------------------------------------------
00133 !
00134 END SUBROUTINE AVERAGE1_CTI