|
SURFEX v7.3
General documentation of Surfex
|
00001 MODULE MODE_MODELN_SURFEX_HANDLER 00002 ! 00003 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00004 USE PARKIND1 ,ONLY : JPRB 00005 ! 00006 IMPLICIT NONE 00007 00008 INTEGER, SAVE, PRIVATE :: ICURRENT_MODEL = -1 00009 !$OMP THREADPRIVATE(ICURRENT_MODEL) 00010 00011 CONTAINS 00012 00013 FUNCTION GET_CURRENT_MODEL_INDEX_SURFEX() 00014 INTEGER :: GET_CURRENT_MODEL_INDEX_SURFEX 00015 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00016 !! 00017 IF (LHOOK) CALL DR_HOOK('MODE_MODELN_SURFEX_HANDLER:GET_CURRENT_MODEL_INDEX_SURFEX',0,ZHOOK_HANDLE) 00018 GET_CURRENT_MODEL_INDEX_SURFEX = ICURRENT_MODEL 00019 IF (LHOOK) CALL DR_HOOK('MODE_MODELN_SURFEX_HANDLER:GET_CURRENT_MODEL_INDEX_SURFEX',1,ZHOOK_HANDLE) 00020 !! 00021 END FUNCTION GET_CURRENT_MODEL_INDEX_SURFEX 00022 00023 SUBROUTINE GOTO_MODEL_SURFEX(KMI, LKFROM) 00024 ! 00025 USE MODI_GOTO_WRAPPER_FLAKE 00026 USE MODI_GOTO_WRAPPER_IDEAL 00027 USE MODI_GOTO_WRAPPER_ISBA 00028 USE MODI_GOTO_WRAPPER_OCEAN 00029 USE MODI_GOTO_WRAPPER_SEAFLUX 00030 USE MODI_GOTO_WRAPPER_SURFATM 00031 USE MODI_GOTO_WRAPPER_TEB 00032 USE MODI_GOTO_WRAPPER_WATFLUX 00033 ! 00034 LOGICAL, INTENT(IN) :: LKFROM 00035 INTEGER, INTENT(IN) :: KMI 00036 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00037 !! 00038 IF (LHOOK) CALL DR_HOOK('MODE_MODELN_SURFEX_HANDLER:GOTO_MODEL_SURFEX',0,ZHOOK_HANDLE) 00039 00040 IF (LKFROM) THEN 00041 00042 IF (ICURRENT_MODEL == -1) THEN 00043 ! First call to GOTO_MODEL_SURFEX 00044 ICURRENT_MODEL = 1 ! Default model index 00045 CALL GOTO_WRAPPER_SURFATM(ICURRENT_MODEL, KMI, LKFROM) 00046 ! 00047 CALL GOTO_WRAPPER_ISBA (ICURRENT_MODEL, KMI, LKFROM) 00048 CALL GOTO_WRAPPER_TEB (ICURRENT_MODEL, KMI, LKFROM, 1) 00049 CALL GOTO_WRAPPER_SEAFLUX(ICURRENT_MODEL, KMI, LKFROM) 00050 CALL GOTO_WRAPPER_IDEAL (ICURRENT_MODEL, KMI, LKFROM) 00051 CALL GOTO_WRAPPER_OCEAN (ICURRENT_MODEL, KMI, LKFROM) 00052 CALL GOTO_WRAPPER_WATFLUX(ICURRENT_MODEL, KMI, LKFROM) 00053 CALL GOTO_WRAPPER_FLAKE (ICURRENT_MODEL, KMI, LKFROM) 00054 ICURRENT_MODEL = KMI 00055 ELSE 00056 00057 CALL GOTO_WRAPPER_SURFATM(ICURRENT_MODEL, KMI, LKFROM) 00058 ! 00059 CALL GOTO_WRAPPER_ISBA (ICURRENT_MODEL, KMI, LKFROM) 00060 CALL GOTO_WRAPPER_TEB (ICURRENT_MODEL, KMI, LKFROM, 1) 00061 CALL GOTO_WRAPPER_SEAFLUX(ICURRENT_MODEL, KMI, LKFROM) 00062 CALL GOTO_WRAPPER_IDEAL (ICURRENT_MODEL, KMI, LKFROM) 00063 CALL GOTO_WRAPPER_OCEAN (ICURRENT_MODEL, KMI, LKFROM) 00064 CALL GOTO_WRAPPER_WATFLUX(ICURRENT_MODEL, KMI, LKFROM) 00065 CALL GOTO_WRAPPER_FLAKE (ICURRENT_MODEL, KMI, LKFROM) 00066 ICURRENT_MODEL = KMI 00067 00068 END IF 00069 00070 ELSE 00071 00072 CALL GOTO_WRAPPER_SURFATM(ICURRENT_MODEL, KMI, LKFROM) 00073 ! 00074 CALL GOTO_WRAPPER_ISBA (ICURRENT_MODEL, KMI, LKFROM) 00075 CALL GOTO_WRAPPER_TEB (ICURRENT_MODEL, KMI, LKFROM, 1) 00076 CALL GOTO_WRAPPER_SEAFLUX(ICURRENT_MODEL, KMI, LKFROM) 00077 CALL GOTO_WRAPPER_IDEAL (ICURRENT_MODEL, KMI, LKFROM) 00078 CALL GOTO_WRAPPER_OCEAN (ICURRENT_MODEL, KMI, LKFROM) 00079 CALL GOTO_WRAPPER_WATFLUX(ICURRENT_MODEL, KMI, LKFROM) 00080 CALL GOTO_WRAPPER_FLAKE (ICURRENT_MODEL, KMI, LKFROM) 00081 00082 ICURRENT_MODEL = KMI 00083 00084 00085 ENDIF 00086 00087 IF (LHOOK) CALL DR_HOOK('MODE_MODELN_SURFEX_HANDLER:GOTO_MODEL_SURFEX',1,ZHOOK_HANDLE) 00088 !! 00089 END SUBROUTINE GOTO_MODEL_SURFEX 00090 00091 END MODULE MODE_MODELN_SURFEX_HANDLER 00092
1.8.0