SURFEX v8.1
General documentation of Surfex
prep_sst_init.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE prep_sst_init (DTS, TPTIME, KSX, PSST)
7 ! ###############################################################
8 !!**** *SST_UPDATE*
9 !!
10 !! PURPOSE
11 !! -------
12 !
13 ! performs the time evolution of sst
14 !
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !! none
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! none
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !!
31 !! AUTHOR
32 !! ------
33 !!
34 !! P. Le Moigne * Meteo-France *
35 !!
36 !! MODIFICATIONS
37 !! -------------
38 !! Original 09/2007
39 !!
40 !-------------------------------------------------------------------------------
41 !
42 !* 0. DECLARATIONS
43 ! ------------
44 !
46 !
48 !
50 USE modi_temporal_dists
51 USE modi_temporal_lts
52 !
53 !
54 USE yomhook ,ONLY : lhook, dr_hook
55 USE parkind1 ,ONLY : jprb
56 !
57 IMPLICIT NONE
58 !
59 !* 0.1 declarations of arguments
60 !
61 !
62 TYPE(data_seaflux_t), INTENT(INOUT) :: DTS
63 !
64 TYPE(date_time), INTENT(IN) :: TPTIME
65 INTEGER, INTENT(INOUT) :: KSX
66 !
67 REAL, DIMENSION(:), INTENT(INOUT) :: PSST ! sst
68 !
69 !* 0.2 declarations of local variables
70 !
71 INTEGER :: IDECADE ! decade of simulation
72 INTEGER :: JTIME ! decade of simulation
73 INTEGER, SAVE :: JI
74 INTEGER :: JXP
75 REAL, DIMENSION(SIZE(PSST)) :: ZSST
76 REAL, SAVE :: ZSDTJX
77 REAL :: ZDT, ZALPHA
78 REAL(KIND=JPRB) :: ZHOOK_HANDLE
79 !-----------------------------------------------------------------
80 !
81 !
82 IF (lhook) CALL dr_hook('PREP_SST_INIT',0,zhook_handle)
83 loop: DO ji = dts%NTIME-1,1,-1
84  ksx = ji
85  IF (.NOT.temporal_lts(tptime,dts%TDATA_SST(ksx))) EXIT loop
86  ENDDO loop
87 
88 IF ( temporal_lts( tptime, dts%TDATA_SST(ksx) ) ) THEN
89  zsst(:) = dts%XDATA_SST(:,ksx)
90 ELSE IF ( .NOT. temporal_lts( tptime, dts%TDATA_SST(dts%NTIME) ) ) THEN
91  zsst(:) = dts%XDATA_SST(:,dts%NTIME)
92 ELSE
93 
94  CALL temporal_dists ( dts%TDATA_SST(ksx+1)%TDATE%YEAR,dts%TDATA_SST(ksx+1)%TDATE%MONTH, &
95  dts%TDATA_SST(ksx+1)%TDATE%DAY ,dts%TDATA_SST(ksx+1)%TIME, &
96  dts%TDATA_SST(ksx)%TDATE%YEAR,dts%TDATA_SST(ksx)%TDATE%MONTH, &
97  dts%TDATA_SST(ksx)%TDATE%DAY ,dts%TDATA_SST(ksx)%TIME, &
98  zsdtjx )
99 
100  CALL temporal_dists ( tptime%TDATE%YEAR ,tptime%TDATE%MONTH, &
101  tptime%TDATE%DAY ,tptime%TIME, &
102  dts%TDATA_SST(ksx)%TDATE%YEAR,dts%TDATA_SST(ksx)%TDATE%MONTH, &
103  dts%TDATA_SST(ksx)%TDATE%DAY ,dts%TDATA_SST(ksx)%TIME, &
104  zdt )
105 !
106  zalpha = zdt / zsdtjx
107 !
108  zsst(:)= dts%XDATA_SST(:,ksx)+(dts%XDATA_SST(:,ksx+1)-dts%XDATA_SST(:,ksx))*zalpha
109 
110 END IF
111 
112 psst(:) = zsst(:)
113 IF (lhook) CALL dr_hook('PREP_SST_INIT',1,zhook_handle)
114 !
115 !-----------------------------------------------------------------
116 !
117 END SUBROUTINE prep_sst_init
logical function temporal_lts(TPT1, TPT2)
Definition: temporal_lts.F90:7
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine temporal_dists(KYEARF, KMONTHF, KDAYF, PSECF, KYEARI, KMONTHI, KDAYI, PSECI, PDIST)
subroutine prep_sst_init(DTS, TPTIME, KSX, PSST)