SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
assim_tebn.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 assim_teb_n (U, T, TOP, &
7  hprogram,ki,pt2m_o,htest)
8 
9 ! ###############################################################################
10 !
11 !!**** *ASSIM_TOWN_n * - Chooses the surface schemes for TOWN parts
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !!
23 !! AUTHOR
24 !! ------
25 !! T. Aspelien
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !! Original 04/2012
30 !! Trygve Aspelien, Separating IO 06/2013
31 !!--------------------------------------------------------------------
32 !
33 !
34 USE modd_surf_atm_n, ONLY : surf_atm_t
35 USE modd_teb_n, ONLY : teb_t
37 !
38 USE modd_csts, ONLY : xpi
39 USE modd_assim, ONLY : nprintlev,xat2m_teb
40 USE modd_surf_par, ONLY : xundef
41 USE yomhook, ONLY : lhook, dr_hook
42 USE parkind1, ONLY : jprb
43 
44 USE modi_abor1_sfx
45 !
46 IMPLICIT NONE
47 !
48 !* 0.1 declarations of arguments
49 !
50 !
51 TYPE(surf_atm_t), INTENT(INOUT) :: u
52 TYPE(teb_t), INTENT(INOUT) :: t
53 TYPE(teb_options_t), INTENT(INOUT) :: top
54 !
55  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
56 INTEGER, INTENT(IN) :: ki
57 REAL,DIMENSION(KI), INTENT(IN) :: pt2m_o
58  CHARACTER(LEN=2), INTENT(IN) :: htest ! must be equal to 'OK'
59 !
60 !* 0.2 declarations of local variables
61 !
62 !-------------------------------------------------------------------------------------
63 !
64 REAL, DIMENSION (KI) :: ztrd3
65 REAL, DIMENSION (KI) :: zt2inc
66 REAL, DIMENSION (KI) :: ztcls
67 INTEGER :: i
68 REAL(KIND=JPRB) :: zhook_handle
69 !
70 IF (lhook) CALL dr_hook('ASSIM_TEB_N',0,zhook_handle)
71 
72 IF (htest/='OK') THEN
73  CALL abor1_sfx('ASSIM_TEB_n: FATAL ERROR DURING ARGUMENT TRANSFER')
74 END IF
75 
76 WRITE(*,*) 'UPDATING TOWN FOR SCHEME: ',trim(u%CTOWN)
77 
78 IF ( top%NROAD_LAYER < 3 ) CALL abor1_sfx('ASSIM_TEB_n: Only imlemented with 3 or more layers')
79 
80 ztrd3(:) = t%CUR%XT_ROAD(:,3) ! T_ROAD3
81 ztcls(:) = xat2m_teb(:) ! T2M (TEB)
82 
83 ! Screen-level innovations
84 
85 zt2inc=0.
86 WHERE ( pt2m_o(:) /= 999. )
87  zt2inc(:) = pt2m_o(:) - ztcls(:)
88 END WHERE
89 
90 IF ( nprintlev > 0 .AND. ki>0) WRITE(*,*) 'Mean T2m increments over TOWN ',sum(zt2inc)/ki
91 
92 
93 ! Temperature analysis of TOWN points
94 
95 WHERE (ztrd3(:)/=xundef)
96  ztrd3(:) = ztrd3(:) + zt2inc(:)/(2.0*xpi)
97 END WHERE
98 !
99 
100 IF (ki>0) WRITE(*,*) 'Mean T_ROAD3 increments over TOWN ',sum(zt2inc)/ki
101 
102 ! Update modified variables
103 t%CUR%XT_ROAD(:,3) = ztrd3 ! T_ROAD3
104 
105 IF (lhook) CALL dr_hook('ASSIM_TEB_N',1,zhook_handle)
106 !
107 !-------------------------------------------------------------------------------------
108 !
109 END SUBROUTINE assim_teb_n
subroutine assim_teb_n(U, T, TOP, HPROGRAM, KI, PT2M_O, HTEST)
Definition: assim_tebn.F90:6
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6