SURFEX v8.1
General documentation of Surfex
modd_ch_isban.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 ! #####################
7 ! ######################
8 !
9 !!
10 !! PURPOSE
11 !! -------
12 !
13 !
14 !
15 !!
16 !!** IMPLICIT ARGUMENTS
17 !! ------------------
18 !! None
19 !!
20 !
21 !! AUTHOR
22 !! ------
23 !! P. Tulet *Meteo France*
24 !!
25 !! MODIFICATIONS
26 !! -------------
27 !! 16/07/03 (P. Tulet) restructured for externalization
28 !------------------------------------------------------------------------------
29 !
30 !* 0. DECLARATIONS
31 ! ------------
32 !
33 USE modd_sv_n, ONLY : sv_t, sv_init
34 !
35 USE yomhook ,ONLY : lhook, dr_hook
36 USE parkind1 ,ONLY : jprb
37 !
38 IMPLICIT NONE
39 
41 !
42  CHARACTER(LEN=28) :: cchem_surf_file ! name of general (chemical) purpose ASCII input file
43  CHARACTER(LEN=6) :: cch_dry_dep ! deposition scheme
44  REAL, DIMENSION(:,:), POINTER :: xdep ! final dry deposition
45  ! velocity for nature
46  REAL, DIMENSION(:), POINTER :: xsoilrc_so2 ! for SO2
47  REAL, DIMENSION(:), POINTER :: xsoilrc_o3 ! for O3
48  LOGICAL :: lch_bio_flux ! flag for the calculation of
49  ! biogenic fluxes
50  LOGICAL :: lch_no_flux ! flag for the calculation of
51  ! biogenic NO fluxes
52  TYPE(sv_t) :: svi
53 
54  CHARACTER(LEN=6), DIMENSION(:), POINTER :: cch_names ! NAME OF CHEMICAL SPECIES
55  ! (FOR DIAG ONLY)
56  CHARACTER(LEN=6), DIMENSION(:), POINTER :: caer_names ! NAME OF CHEMICAL SPECIES
57  CHARACTER(LEN=6), DIMENSION(:), POINTER :: cdstnames ! NAME OF CHEMICAL SPECIES
58  CHARACTER(LEN=6), DIMENSION(:), POINTER :: csltnames ! NAME OF CHEMICAL SPECIES
59 !
60 END TYPE ch_isba_t
61 !
63 !
64 TYPE(ch_isba_t), DIMENSION(:), POINTER :: al=>null()
65 !
66 END TYPE ch_isba_np_t
67 !
68 CONTAINS
69 !
70 SUBROUTINE ch_isba_init(YCH_ISBA)
71 TYPE(ch_isba_t), INTENT(INOUT) :: YCH_ISBA
72 REAL(KIND=JPRB) :: ZHOOK_HANDLE
73 IF (lhook) CALL dr_hook("MODD_CH_ISBA_N:CH_ISBA_INIT",0,zhook_handle)
74 NULLIFY(ych_isba%XDEP)
75 NULLIFY(ych_isba%XSOILRC_SO2)
76 NULLIFY(ych_isba%XSOILRC_O3)
77 NULLIFY(ych_isba%CCH_NAMES)
78 NULLIFY(ych_isba%CAER_NAMES)
79 NULLIFY(ych_isba%CDSTNAMES)
80 NULLIFY(ych_isba%CSLTNAMES)
81 ych_isba%CCHEM_SURF_FILE=' '
82 ych_isba%CCH_DRY_DEP=' '
83 ych_isba%LCH_BIO_FLUX=.false.
84 ych_isba%LCH_NO_FLUX=.false.
85  CALL sv_init(ych_isba%SVI)
86 IF (lhook) CALL dr_hook("MODD_CH_ISBA_N:CH_ISBA_INIT",1,zhook_handle)
87 END SUBROUTINE ch_isba_init
88 !
89 SUBROUTINE ch_isba_np_init(YCH_ISBA_NP,KPATCH)
90 TYPE(ch_isba_np_t), INTENT(INOUT) :: YCH_ISBA_NP
91 INTEGER, INTENT(IN) :: KPATCH
92 INTEGER :: JP
93 REAL(KIND=JPRB) :: ZHOOK_HANDLE
94 IF (lhook) CALL dr_hook("MODD_CH_ISBA_N:CH_ISBA_NP_INIT",0,zhook_handle)
95 !
96 IF (ASSOCIATED(ych_isba_np%AL)) THEN
97  DO jp = 1,kpatch
98  CALL ch_isba_init(ych_isba_np%AL(jp))
99  ENDDO
100  DEALLOCATE(ych_isba_np%AL)
101 ELSE
102  ALLOCATE(ych_isba_np%AL(kpatch))
103  DO jp = 1,kpatch
104  CALL ch_isba_init(ych_isba_np%AL(jp))
105  ENDDO
106 ENDIF
107 !
108 IF (lhook) CALL dr_hook("MODD_CH_ISBA_N:CH_ISBA_NP_INIT",1,zhook_handle)
109 END SUBROUTINE ch_isba_np_init
110 !
111 END MODULE modd_ch_isba_n
subroutine sv_init(YSV)
Definition: modd_svn.F90:65
subroutine ch_isba_np_init(YCH_ISBA_NP, KPATCH)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine ch_isba_init(YCH_ISBA)
logical lhook
Definition: yomhook.F90:15