SURFEX v7.3
General documentation of Surfex
|
00001 !################## 00002 MODULE MODE_SPLIT_GRID_PARAMETER 00003 !################## 00004 ! 00005 CONTAINS 00006 ! 00007 ! ############################################################# 00008 SUBROUTINE SPLIT_GRID_PARAMETERX1(HPROGRAM,HGRID,HREC,KDIM,KSIZE,PFIELD,PFIELD_SPLIT) 00009 ! ############################################################# 00010 ! 00011 !!**** * - routine to split a real array on the splitted grid 00012 ! 00013 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00014 USE PARKIND1 ,ONLY : JPRB 00015 ! 00016 #ifdef OL 00017 USE MODE_SPLIT_GRID_PARAMETER_OL 00018 #endif 00019 #ifdef MNH 00020 USE MODI_SPLIT_GRID_PARAMETERX1_MNH 00021 #endif 00022 ! 00023 IMPLICIT NONE 00024 ! 00025 !* 0.1 Declarations of arguments 00026 ! 00027 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00028 CHARACTER(LEN=10), INTENT(IN) :: HGRID ! grid type 00029 CHARACTER(LEN=6), INTENT(IN) :: HREC ! name of the parameter 00030 INTEGER, INTENT(IN) :: KDIM ! size of PFIELD 00031 INTEGER, INTENT(IN) :: KSIZE ! size of PFIELD_SPLIT 00032 REAL, DIMENSION(KDIM ), INTENT(IN) :: PFIELD ! real field for complete grid 00033 REAL, DIMENSION(KSIZE), INTENT(OUT):: PFIELD_SPLIT! real field for splitted grid 00034 ! 00035 !* 0.2 Declarations of local variables 00036 ! 00037 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00038 !------------------------------------------------------------------------------- 00039 IF (LHOOK) CALL DR_HOOK('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERX1',0,ZHOOK_HANDLE) 00040 ! 00041 IF (HPROGRAM=='MESONH') THEN 00042 #ifdef MNH 00043 CALL SPLIT_GRID_PARAMETERX1_MNH(HGRID,HREC,KDIM,KSIZE,PFIELD,PFIELD_SPLIT) 00044 #endif 00045 ENDIF 00046 ! 00047 ! 00048 IF (HPROGRAM=='OFFLIN') THEN 00049 #ifdef OL 00050 CALL SPLIT_GRID_PARAMETERX1_OL(HPROGRAM,HGRID,HREC,KDIM,KSIZE,PFIELD,PFIELD_SPLIT) 00051 #endif 00052 ENDIF 00053 ! 00054 IF (LHOOK) CALL DR_HOOK('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERX1',1,ZHOOK_HANDLE) 00055 ! 00056 !------------------------------------------------------------------------------- 00057 END SUBROUTINE SPLIT_GRID_PARAMETERX1 00058 ! 00059 ! 00060 ! ############################################################# 00061 SUBROUTINE SPLIT_GRID_PARAMETERN0(HPROGRAM,HGRID,HREC,KFIELD,KFIELD_SPLIT) 00062 ! ############################################################# 00063 ! 00064 !!**** * - routine to define an integer related to splitted grid 00065 ! 00066 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00067 USE PARKIND1 ,ONLY : JPRB 00068 ! 00069 #ifdef OL 00070 USE MODE_SPLIT_GRID_PARAMETER_OL 00071 #endif 00072 #ifdef MNH 00073 USE MODI_SPLIT_GRID_PARAMETERN0_MNH 00074 #endif 00075 ! 00076 IMPLICIT NONE 00077 ! 00078 !* 0.1 Declarations of arguments 00079 ! 00080 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program 00081 CHARACTER(LEN=10), INTENT(IN) :: HGRID ! grid type 00082 CHARACTER(LEN=6), INTENT(IN) :: HREC ! name of the parameter 00083 INTEGER, INTENT(IN) :: KFIELD ! integer scalar for complete grid 00084 INTEGER, INTENT(OUT):: KFIELD_SPLIT ! integer scalar for splitted grid 00085 !* 0.2 Declarations of local variables 00086 ! 00087 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00088 !------------------------------------------------------------------------------- 00089 IF (LHOOK) CALL DR_HOOK('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERN0',0,ZHOOK_HANDLE) 00090 ! 00091 !------------------------------------------------------------------------------- 00092 ! 00093 IF (HPROGRAM=='MESONH') THEN 00094 #ifdef MNH 00095 CALL SPLIT_GRID_PARAMETERN0_MNH(HGRID,HREC,KFIELD,KFIELD_SPLIT) 00096 #endif 00097 ENDIF 00098 ! 00099 IF (HPROGRAM=='OFFLIN') THEN 00100 #ifdef OL 00101 CALL SPLIT_GRID_PARAMETERN0_OL(HPROGRAM,HGRID,HREC,KFIELD,KFIELD_SPLIT) 00102 #endif 00103 ENDIF 00104 ! 00105 IF (LHOOK) CALL DR_HOOK('MODE_SPLIT_GRID_PARAMETER:SPLIT_GRID_PARAMETERN0',1,ZHOOK_HANDLE) 00106 ! 00107 !------------------------------------------------------------------------------- 00108 END SUBROUTINE SPLIT_GRID_PARAMETERN0 00109 ! 00110 END MODULE MODE_SPLIT_GRID_PARAMETER