SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/unpack_same_rank2.F90
Go to the documentation of this file.
00001 !     ##########################
00002       MODULE MODI_UNPACK_SAME_RANK2
00003 !     ##########################
00004 INTERFACE UNPACK_SAME_RANK2
00005 !
00006       SUBROUTINE UNPACK_SAME_RANK2_FROM1D(KM,P1D_IN,P1D_OUT,PMISS)
00007 
00008 INTEGER, DIMENSION(:),   INTENT(IN) :: KM
00009 REAL, DIMENSION(:),   INTENT(IN) :: P1D_IN
00010 REAL(KIND=4), DIMENSION(:),   INTENT(OUT):: P1D_OUT
00011 REAL, OPTIONAL,       INTENT(IN) :: PMISS
00012 END SUBROUTINE UNPACK_SAME_RANK2_FROM1D
00013 !
00014       SUBROUTINE UNPACK_SAME_RANK2_FROM2D(KM,P2D_IN,P2D_OUT,PMISS)
00015 
00016 INTEGER, DIMENSION(:),   INTENT(IN) :: KM
00017 REAL, DIMENSION(:,:), INTENT(IN) :: P2D_IN
00018 REAL(KIND=4), DIMENSION(:,:), INTENT(OUT):: P2D_OUT
00019 REAL, OPTIONAL,       INTENT(IN) :: PMISS
00020 !
00021 END SUBROUTINE UNPACK_SAME_RANK2_FROM2D
00022 !
00023 END INTERFACE 
00024 !
00025 END MODULE MODI_UNPACK_SAME_RANK2
00026 !
00027 !
00028 !     ##############################################
00029       SUBROUTINE UNPACK_SAME_RANK2_FROM1D(KM,P1D_IN,P1D_OUT,PMISS)
00030 !     ##############################################
00031 !
00032 !!****  *UNPACK_SAME_RANK2* - extract the defined data from a 1D field into a 1D field of lower rank
00033 !!
00034 !!    PURPOSE
00035 !!    -------
00036 !!
00037 !!**  METHOD
00038 !!    ------
00039 !!
00040 !!    EXTERNAL
00041 !!    --------
00042 !!
00043 !!
00044 !!    IMPLICIT ARGUMENTS
00045 !!    ------------------
00046 !!
00047 !!    REFERENCE
00048 !!    ---------
00049 !!
00050 !!
00051 !!    AUTHOR
00052 !!    ------
00053 !!      F. Habets   *Meteo France*      
00054 !!
00055 !!    MODIFICATIONS
00056 !!    -------------
00057 !!      Original    08/03
00058 !!      B. Decharme 2008  Allows to put other optional value for missval
00059 !-------------------------------------------------------------------------------
00060 !
00061 !*       0.    DECLARATIONS
00062 !              ------------
00063 !
00064 USE MODD_SURF_PAR,   ONLY : XUNDEF
00065 !
00066 !
00067 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00068 USE PARKIND1  ,ONLY : JPRB
00069 !
00070 IMPLICIT NONE
00071 !
00072 !*       0.1   Declarations of arguments
00073 !              -------------------------
00074 !
00075 INTEGER, DIMENSION(:),   INTENT(IN) :: KM
00076 REAL, DIMENSION(:),   INTENT(IN) :: P1D_IN
00077 REAL(KIND=4), DIMENSION(:),   INTENT(OUT):: P1D_OUT
00078 REAL, OPTIONAL,       INTENT(IN) :: PMISS
00079 !
00080 !*       0.2   Declarations of local variables
00081 !              -------------------------------
00082 !
00083 INTEGER :: JI ! loop counter
00084 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00085 !
00086 !-------------------------------------------------------------------------------
00087 !
00088 IF (LHOOK) CALL DR_HOOK('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM1D',0,ZHOOK_HANDLE)
00089 IF(PRESENT(PMISS))THEN
00090   P1D_OUT(:) = PMISS      
00091 ELSE
00092   P1D_OUT(:) = XUNDEF
00093 ENDIF
00094 !
00095 !cdir nodep
00096 DO JI=1,SIZE(P1D_IN,1)
00097   P1D_OUT(KM(JI)) = P1D_IN(JI) 
00098 ENDDO
00099 IF (LHOOK) CALL DR_HOOK('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM1D',1,ZHOOK_HANDLE)
00100 !
00101 !-------------------------------------------------------------------------------
00102 !
00103 END SUBROUTINE UNPACK_SAME_RANK2_FROM1D
00104 !
00105 !     ##############################################
00106       SUBROUTINE UNPACK_SAME_RANK2_FROM2D(KM,P2D_IN,P2D_OUT,PMISS)
00107 !     ##############################################
00108 !
00109 !!****  *UNPACK_SAME_RANK2* - extract the defined data from a 2D field into a 2D field
00110 !!
00111 !!    PURPOSE
00112 !!    -------
00113 !!
00114 !!**  METHOD
00115 !!    ------
00116 !!
00117 !!    EXTERNAL
00118 !!    --------
00119 !!
00120 !!
00121 !!    IMPLICIT ARGUMENTS
00122 !!    ------------------
00123 !!
00124 !!    REFERENCE
00125 !!    ---------
00126 !!
00127 !!
00128 !!    AUTHOR
00129 !!    ------
00130 !!      F. Habets   *Meteo France*      
00131 !!
00132 !!    MODIFICATIONS
00133 !!    -------------
00134 !!      Original    08/03
00135 !-------------------------------------------------------------------------------
00136 !
00137 !*       0.    DECLARATIONS
00138 !              ------------
00139 !
00140 USE MODD_SURF_PAR,   ONLY : XUNDEF
00141 !
00142 !
00143 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00144 USE PARKIND1  ,ONLY : JPRB
00145 !
00146 IMPLICIT NONE
00147 !
00148 !*       0.1   Declarations of arguments
00149 !              -------------------------
00150 !
00151 INTEGER, DIMENSION(:),  INTENT(IN) :: KM
00152 REAL, DIMENSION(:,:),   INTENT(IN) :: P2D_IN
00153 REAL(KIND=4), DIMENSION(:,:),   INTENT(OUT):: P2D_OUT
00154 REAL, OPTIONAL,         INTENT(IN) :: PMISS
00155 !
00156 !*       0.2   Declarations of local variables
00157 !              -------------------------------
00158 !
00159 INTEGER :: JI, JJ ! loop counter
00160 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00161 !
00162 !-------------------------------------------------------------------------------
00163 !
00164 IF (LHOOK) CALL DR_HOOK('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM2D',0,ZHOOK_HANDLE)
00165 IF(PRESENT(PMISS))THEN
00166   P2D_OUT(:,:) = PMISS      
00167 ELSE
00168   P2D_OUT(:,:) = XUNDEF
00169 ENDIF
00170 !
00171 DO JJ=1,SIZE(P2D_IN,2)
00172 !cdir nodep
00173   DO JI=1,SIZE(P2D_IN,1)
00174     P2D_OUT(KM(JI),JJ) = P2D_IN(JI,JJ)
00175   ENDDO 
00176 ENDDO
00177 IF (LHOOK) CALL DR_HOOK('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM2D',1,ZHOOK_HANDLE)
00178 !
00179 !-------------------------------------------------------------------------------
00180 !
00181 END SUBROUTINE UNPACK_SAME_RANK2_FROM2D
00182 !