SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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, S, &
7  psst)
8 ! ###############################################################
9 !!**** *SST_UPDATE*
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 ! performs the time evolution of sst
15 !
16 !!** METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !! none
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! none
27 !!
28 !! REFERENCE
29 !! ---------
30 !!
31 !!
32 !! AUTHOR
33 !! ------
34 !!
35 !! P. Le Moigne * Meteo-France *
36 !!
37 !! MODIFICATIONS
38 !! -------------
39 !! Original 09/2007
40 !!
41 !-------------------------------------------------------------------------------
42 !
43 !* 0. DECLARATIONS
44 ! ------------
45 !
46 !
48 USE modd_seaflux_n, ONLY : seaflux_t
49 !
51 USE modi_temporal_dists
52 USE modi_temporal_lts
53 !
54 !
55 USE yomhook ,ONLY : lhook, dr_hook
56 USE parkind1 ,ONLY : jprb
57 !
58 IMPLICIT NONE
59 !
60 !* 0.1 declarations of arguments
61 !
62 !
63 !
64 TYPE(data_seaflux_t), INTENT(INOUT) :: dts
65 TYPE(seaflux_t), INTENT(INOUT) :: s
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  s%JSX = ji
85  IF (.NOT.temporal_lts(s%TTIME,dts%TDATA_SST(s%JSX))) EXIT loop
86  ENDDO loop
87 
88 IF ( temporal_lts( s%TTIME, dts%TDATA_SST(s%JSX) ) ) THEN
89  zsst(:) = dts%XDATA_SST(:,s%JSX)
90 ELSE IF ( .NOT. temporal_lts( s%TTIME, dts%TDATA_SST(dts%NTIME) ) ) THEN
91  zsst(:) = dts%XDATA_SST(:,dts%NTIME)
92 ELSE
93 
94  CALL temporal_dists( dts%TDATA_SST(s%JSX+1)%TDATE%YEAR,dts%TDATA_SST(s%JSX+1)%TDATE%MONTH, &
95  dts%TDATA_SST(s%JSX+1)%TDATE%DAY ,dts%TDATA_SST(s%JSX+1)%TIME, &
96  dts%TDATA_SST(s%JSX)%TDATE%YEAR,dts%TDATA_SST(s%JSX)%TDATE%MONTH, &
97  dts%TDATA_SST(s%JSX)%TDATE%DAY ,dts%TDATA_SST(s%JSX)%TIME, &
98  zsdtjx )
99 
100  CALL temporal_dists( s%TTIME%TDATE%YEAR ,s%TTIME%TDATE%MONTH, &
101  s%TTIME%TDATE%DAY ,s%TTIME%TIME, &
102  dts%TDATA_SST(s%JSX)%TDATE%YEAR,dts%TDATA_SST(s%JSX)%TDATE%MONTH, &
103  dts%TDATA_SST(s%JSX)%TDATE%DAY ,dts%TDATA_SST(s%JSX)%TIME, &
104  zdt )
105 !
106  zalpha = zdt / zsdtjx
107 !
108  zsst(:)= dts%XDATA_SST(:,s%JSX)+(dts%XDATA_SST(:,s%JSX+1)-dts%XDATA_SST(:,s%JSX))*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:6
subroutine temporal_dists(KYEARF, KMONTHF, KDAYF, PSECF, KYEARI, KMONTHI, KDAYI, PSECI, PDIST)
subroutine prep_sst_init(DTS, S, PSST)