SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/mode_modeln_surfex_handler.F90
Go to the documentation of this file.
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