SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_sst_init.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE PREP_SST_INIT(PSST)
00003 !   ###############################################################
00004 !!****  *SST_UPDATE*
00005 !!
00006 !!    PURPOSE
00007 !!    -------
00008 !
00009 !     performs the time evolution of sst
00010 !              
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!    none
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!      
00021 !!    none
00022 !!
00023 !!    REFERENCE
00024 !!    ---------
00025 !!
00026 !!      
00027 !!    AUTHOR
00028 !!    ------
00029 !!
00030 !!      P. Le Moigne          * Meteo-France *
00031 !!
00032 !!    MODIFICATIONS
00033 !!    -------------
00034 !!      Original    09/2007
00035 !!
00036 !-------------------------------------------------------------------------------
00037 !
00038 !*       0.     DECLARATIONS
00039 !               ------------
00040 !
00041 USE MODD_TYPE_DATE_SURF
00042 USE MODD_SEAFLUX_n, ONLY : XSST_INI, TTIME, JSX
00043 USE MODD_DATA_SEAFLUX_n, ONLY : NTIME, XDATA_SST, TDATA_SST
00044 USE MODI_TEMPORAL_DISTS
00045 USE MODI_TEMPORAL_LTS
00046 !
00047 !
00048 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00049 USE PARKIND1  ,ONLY : JPRB
00050 !
00051 IMPLICIT NONE
00052 !
00053 !*      0.1    declarations of arguments
00054 !
00055 !
00056 REAL,   DIMENSION(:), INTENT(INOUT) :: PSST    ! sst
00057 !
00058 !*      0.2    declarations of local variables
00059 !
00060 INTEGER                                  :: IDECADE  ! decade of simulation
00061 INTEGER                                  :: JTIME    ! decade of simulation
00062 INTEGER, SAVE                            :: JI
00063 INTEGER                                  :: JXP
00064 REAL, DIMENSION(SIZE(PSST))              :: ZSST
00065 REAL, SAVE                               :: ZSDTJX
00066 REAL                                     :: ZDT, ZALPHA
00067 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00068 !-----------------------------------------------------------------
00069 !
00070 !
00071 IF (LHOOK) CALL DR_HOOK('PREP_SST_INIT',0,ZHOOK_HANDLE)
00072 LOOP: DO JI = NTIME-1,1,-1
00073          JSX = JI
00074          IF (.NOT.TEMPORAL_LTS(TTIME,TDATA_SST(JSX))) EXIT LOOP
00075       ENDDO LOOP
00076 
00077 IF ( TEMPORAL_LTS ( TTIME, TDATA_SST(JSX) ) ) THEN
00078    ZSST(:) = XDATA_SST(:,JSX)     
00079 ELSE IF ( .NOT. TEMPORAL_LTS ( TTIME, TDATA_SST(NTIME) ) ) THEN
00080   ZSST(:) = XDATA_SST(:,NTIME)
00081 ELSE
00082 
00083    CALL TEMPORAL_DISTS ( TDATA_SST(JSX+1)%TDATE%YEAR,TDATA_SST(JSX+1)%TDATE%MONTH,   &
00084                            TDATA_SST(JSX+1)%TDATE%DAY ,TDATA_SST(JSX+1)%TIME,          &
00085                            TDATA_SST(JSX)%TDATE%YEAR,TDATA_SST(JSX)%TDATE%MONTH,       &
00086                            TDATA_SST(JSX)%TDATE%DAY ,TDATA_SST(JSX)%TIME,              &
00087                            ZSDTJX                                                      )  
00088 
00089    CALL TEMPORAL_DISTS ( TTIME%TDATE%YEAR   ,TTIME%TDATE%MONTH,                      &
00090                            TTIME%TDATE%DAY    ,TTIME%TIME,                             &
00091                            TDATA_SST(JSX)%TDATE%YEAR,TDATA_SST(JSX)%TDATE%MONTH,       &
00092                            TDATA_SST(JSX)%TDATE%DAY ,TDATA_SST(JSX)%TIME,              &
00093                            ZDT                                                         )  
00094 !
00095     ZALPHA = ZDT / ZSDTJX
00096 !
00097     ZSST(:)= XDATA_SST(:,JSX)+(XDATA_SST(:,JSX+1)-XDATA_SST(:,JSX))*ZALPHA
00098                        
00099 END IF
00100 
00101 PSST(:) = ZSST(:)
00102 IF (LHOOK) CALL DR_HOOK('PREP_SST_INIT',1,ZHOOK_HANDLE)
00103 !
00104 !-----------------------------------------------------------------
00105 !
00106 END SUBROUTINE PREP_SST_INIT