SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_isba_ascllv.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE PREP_ISBA_ASCLLV(HPROGRAM,HSURF,KLUOUT,PFIELD)
00003 !     #################################################################################
00004 !
00005 !!****  *PREP_ISBA_ASCLLV* - prepares ISBA field from prescribed values
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!      
00016 !!
00017 !!    AUTHOR
00018 !!    ------
00019 !!     P. Le Moigne 
00020 !!
00021 !!    MODIFICATIONS
00022 !!    -------------
00023 !!      Original    03/2007
00024 !!------------------------------------------------------------------
00025 !
00026 !
00027 USE MODD_PREP,           ONLY : CINTERP_TYPE
00028 USE MODD_PGD_GRID,       ONLY : NL,LLATLONMASK,CGRID,XGRID_PAR,NGRID_PAR
00029 USE MODD_PGDWORK,        ONLY : CATYPE
00030 USE MODD_DATA_COVER_PAR, ONLY : NVEGTYPE
00031 USE MODD_SURF_PAR,       ONLY : XUNDEF
00032 USE MODD_PREP_ISBA,      ONLY : CTYPE_HUG     , CTYPE_TG     , &
00033                                   CFILE_HUG_SURF, CFILE_TG_SURF, &
00034                                   CFILE_HUG_ROOT, CFILE_TG_ROOT, &
00035                                   CFILE_HUG_DEEP, CFILE_TG_DEEP  
00036 USE MODI_PGD_FIELD
00037 USE MODI_GET_LATLONMASK_n
00038 !
00039 !
00040 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00041 USE PARKIND1  ,ONLY : JPRB
00042 !
00043 USE MODI_GET_TYPE_DIM_n
00044 !
00045 IMPLICIT NONE
00046 !
00047 !*      0.1    declarations of arguments
00048 !
00049  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00050  CHARACTER(LEN=7),   INTENT(IN)  :: HSURF     ! type of field
00051 INTEGER,            INTENT(IN)  :: KLUOUT    ! logical unit of output listing
00052 REAL, POINTER, DIMENSION(:,:,:) :: PFIELD    ! field to interpolate horizontally
00053 !
00054 !*      0.2    declarations of local variables
00055 !
00056 INTEGER :: JV ! loop counter
00057 INTEGER :: JLAYER
00058 INTEGER :: IL
00059 !
00060 REAL, ALLOCATABLE, DIMENSION(:,:)     :: ZFIELD
00061 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00062 !
00063 !-------------------------------------------------------------------------------------
00064 !
00065 IF (LHOOK) CALL DR_HOOK('PREP_ISBA_ASCLLV',0,ZHOOK_HANDLE)
00066 CATYPE = 'ARI'
00067 !
00068 !*      1.    get full dimension of grid
00069 !
00070  CALL GET_TYPE_DIM_n('FULL  ',NL)
00071 !
00072 !*      2.    get nature dimension
00073 !
00074  CALL GET_TYPE_DIM_n('NATURE',IL)
00075 !
00076 ALLOCATE(ZFIELD(IL,3))
00077 !
00078 !*      3.    get grid informations known over full grid
00079 !
00080  CALL GET_LATLONMASK_n(LLATLONMASK,CGRID,XGRID_PAR,NGRID_PAR)
00081 !
00082 !
00083 SELECT CASE(HSURF)
00084 !
00085 !
00086 !*      4.    Profile of soil relative humidity
00087 !
00088   CASE('WG     ')
00089 
00090     CALL PGD_FIELD(HPROGRAM,'HUG_SURF: relative humidity','NAT',CFILE_HUG_SURF,   &
00091                         CTYPE_HUG,XUNDEF,ZFIELD(:,1))  
00092     CALL PGD_FIELD(HPROGRAM,'HUG_ROOT: relative humidity','NAT',CFILE_HUG_ROOT,   &
00093                         CTYPE_HUG,XUNDEF,ZFIELD(:,2))  
00094     CALL PGD_FIELD(HPROGRAM,'HUG_DEEP: relative humidity','NAT',CFILE_HUG_DEEP,   &
00095                         CTYPE_HUG,XUNDEF,ZFIELD(:,3))  
00096 
00097     ALLOCATE(PFIELD(IL,3,NVEGTYPE))
00098     DO JV=1,NVEGTYPE
00099       PFIELD(:,1,JV) = ZFIELD(:,1)
00100       PFIELD(:,2,JV) = ZFIELD(:,2)
00101       PFIELD(:,3,JV) = ZFIELD(:,3)
00102     END DO
00103 
00104 !*      5.    Profile of temperatures
00105 
00106   CASE('TG     ')
00107 
00108     CALL PGD_FIELD(HPROGRAM,'TG_SURF: temperature','NAT',CFILE_TG_SURF,   &
00109                         CTYPE_TG,XUNDEF,ZFIELD(:,1))  
00110     CALL PGD_FIELD(HPROGRAM,'TG_ROOT: temperature','NAT',CFILE_TG_ROOT,   &
00111                         CTYPE_TG,XUNDEF,ZFIELD(:,2))  
00112     CALL PGD_FIELD(HPROGRAM,'TG_DEEP: temperature','NAT',CFILE_TG_DEEP,   &
00113                         CTYPE_TG,XUNDEF,ZFIELD(:,3))  
00114 
00115     ALLOCATE(PFIELD(IL,3,NVEGTYPE))
00116     DO JV=1,NVEGTYPE
00117       PFIELD(:,1,JV) = ZFIELD(:,1)
00118       PFIELD(:,2,JV) = ZFIELD(:,2)
00119       PFIELD(:,3,JV) = ZFIELD(:,3)
00120     END DO
00121 
00122 END SELECT
00123 !
00124 !*      6.     Interpolation method
00125 !              --------------------
00126 !
00127 CINTERP_TYPE='NONE  '
00128 DEALLOCATE(ZFIELD)
00129 IF (LHOOK) CALL DR_HOOK('PREP_ISBA_ASCLLV',1,ZHOOK_HANDLE)
00130 !
00131 !-------------------------------------------------------------------------------------
00132 END SUBROUTINE PREP_ISBA_ASCLLV