SURFEX v7.3
General documentation of Surfex
|
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