Line data Source code
1 : !================================================================================================
2 : ! This is the 'none' chemistry module.
3 : ! Most of the routines return without doing anything.
4 : !================================================================================================
5 :
6 : module chemistry
7 : use shr_kind_mod, only: r8 => shr_kind_r8
8 : use physics_types, only: physics_state, physics_ptend
9 : use ppgrid, only: begchunk, endchunk, pcols
10 :
11 :
12 : implicit none
13 : private
14 : save
15 : !
16 : ! Public interfaces
17 : !
18 : public :: chem_is ! identify which chemistry is being used
19 : public :: chem_register ! register consituents
20 : public :: chem_is_active ! returns true if this package is active (ghg_chem=.true.)
21 : public :: chem_implements_cnst ! returns true if consituent is implemented by this package
22 : public :: chem_init_cnst ! initialize mixing ratios if not read from initial file
23 : public :: chem_init ! initialize (history) variables
24 : public :: chem_timestep_init ! time interpolate chemical loss frequencies
25 : public :: chem_timestep_tend ! interface to tendency computation
26 : public :: chem_final
27 : public :: chem_write_restart
28 : public :: chem_read_restart
29 : public :: chem_init_restart
30 : public :: chem_readnl ! read chem namelist
31 : public :: chem_reset_fluxes
32 : public :: chem_emissions
33 :
34 : interface chem_write_restart
35 : module procedure chem_write_restart_bin
36 : module procedure chem_write_restart_pio
37 : end interface
38 : interface chem_read_restart
39 : module procedure chem_read_restart_bin
40 : module procedure chem_read_restart_pio
41 : end interface
42 :
43 : ! Private data
44 :
45 : !================================================================================================
46 : contains
47 : !================================================================================================
48 :
49 1489176 : logical function chem_is (name)
50 :
51 : character(len=*), intent(in) :: name
52 :
53 0 : chem_is = .false.
54 0 : if (name == 'none' ) then
55 0 : chem_is = .true.
56 : end if
57 :
58 0 : end function chem_is
59 :
60 : !================================================================================================
61 :
62 1536 : subroutine chem_register
63 : use aero_model, only : aero_model_register
64 : !-----------------------------------------------------------------------
65 : !
66 : ! Purpose: register advected constituents for parameterized greenhouse gas chemistry
67 : !
68 : !-----------------------------------------------------------------------
69 :
70 : ! for prescribed aerosols
71 1536 : call aero_model_register()
72 :
73 1536 : end subroutine chem_register
74 :
75 : !================================================================================================
76 :
77 1536 : subroutine chem_readnl(nlfile)
78 :
79 : ! args
80 :
81 : character(len=*), intent(in) :: nlfile ! filepath for file containing namelist input
82 :
83 :
84 1536 : end subroutine chem_readnl
85 :
86 : !================================================================================================
87 :
88 1489176 : function chem_is_active()
89 : !-----------------------------------------------------------------------
90 : logical :: chem_is_active
91 : !-----------------------------------------------------------------------
92 1489176 : chem_is_active = .false.
93 1489176 : end function chem_is_active
94 :
95 : !================================================================================================
96 :
97 0 : function chem_implements_cnst(name)
98 : !-----------------------------------------------------------------------
99 : !
100 : ! Purpose: return true if specified constituent is implemented by this package
101 : !
102 : ! Author: B. Eaton
103 : !
104 : !-----------------------------------------------------------------------
105 : implicit none
106 : !-----------------------------Arguments---------------------------------
107 :
108 : character(len=*), intent(in) :: name ! constituent name
109 : logical :: chem_implements_cnst ! return value
110 :
111 0 : chem_implements_cnst = .false.
112 :
113 0 : end function chem_implements_cnst
114 :
115 : !===============================================================================
116 :
117 1536 : subroutine chem_init(phys_state, pbuf2d)
118 : !-----------------------------------------------------------------------
119 : !
120 : ! Purpose: initialize parameterized greenhouse gas chemistry
121 : ! (declare history variables)
122 : !
123 : !-----------------------------------------------------------------------
124 : use physics_buffer, only : physics_buffer_desc
125 : use aero_model, only : aero_model_init
126 :
127 : type(physics_state), intent(in):: phys_state(begchunk:endchunk)
128 : type(physics_buffer_desc), pointer :: pbuf2d(:,:)
129 :
130 : ! for prescribed aerosols
131 1536 : call aero_model_init(pbuf2d)
132 :
133 1536 : end subroutine chem_init
134 :
135 : !===============================================================================
136 :
137 370944 : subroutine chem_timestep_init(phys_state, pbuf2d)
138 1536 : use physics_buffer, only : physics_buffer_desc
139 : use time_manager, only: get_curr_date, get_perp_date, get_curr_calday, &
140 : is_perpetual
141 : type(physics_state), intent(in):: phys_state(begchunk:endchunk)
142 : type(physics_buffer_desc), pointer :: pbuf2d(:,:)
143 :
144 :
145 :
146 370944 : end subroutine chem_timestep_init
147 :
148 : !===============================================================================
149 :
150 0 : subroutine chem_timestep_tend( state, ptend, cam_in, cam_out, dt, pbuf, fh2o)
151 370944 : use physics_buffer, only: physics_buffer_desc
152 : use cam_history, only: outfld
153 : use camsrfexch, only: cam_in_t, cam_out_t
154 : !-----------------------------------------------------------------------
155 : !
156 : ! Arguments:
157 : !
158 : real(r8), intent(in) :: dt ! time step
159 : type(physics_state), intent(in) :: state ! Physics state variables
160 : type(physics_ptend), intent(out) :: ptend ! indivdual parameterization tendencies
161 : type(cam_in_t), intent(inout) :: cam_in
162 : type(cam_out_t), intent(in) :: cam_out
163 : type(physics_buffer_desc), pointer :: pbuf(:)
164 : real(r8), optional, intent(out) :: fh2o(pcols) ! h2o flux to balance source from chemistry
165 :
166 0 : return
167 0 : end subroutine chem_timestep_tend
168 :
169 : !===============================================================================
170 :
171 0 : subroutine chem_init_cnst(name, latvals, lonvals, mask, q)
172 :
173 : character(len=*), intent(in) :: name ! constituent name
174 : real(r8), intent(in) :: latvals(:) ! lat in degrees (ncol)
175 : real(r8), intent(in) :: lonvals(:) ! lon in degrees (ncol)
176 : logical, intent(in) :: mask(:) ! Only initialize where .true.
177 : real(r8), intent(out) :: q(:,:) ! kg tracer/kg dry air (gcol, plev
178 :
179 0 : return
180 0 : end subroutine chem_init_cnst
181 :
182 : !===============================================================================
183 1536 : subroutine chem_final
184 1536 : return
185 : end subroutine chem_final
186 : !===============================================================================
187 0 : subroutine chem_write_restart_bin( nrg )
188 : implicit none
189 : integer,intent(in) :: nrg ! Unit number
190 0 : return
191 : end subroutine chem_write_restart_bin
192 : !===============================================================================
193 0 : subroutine chem_read_restart_bin( nrg )
194 : implicit none
195 : integer,intent(in) :: nrg ! Unit number
196 0 : return
197 : end subroutine chem_read_restart_bin
198 : !===============================================================================
199 1536 : subroutine chem_write_restart_pio( File )
200 : use pio, only : file_desc_t
201 : type(file_desc_t) :: File
202 1536 : return
203 : end subroutine chem_write_restart_pio
204 : !===============================================================================
205 768 : subroutine chem_read_restart_pio( File )
206 : use pio, only : file_desc_t
207 : type(file_desc_t) :: File
208 768 : return
209 : end subroutine chem_read_restart_pio
210 : !===============================================================================
211 1536 : subroutine chem_init_restart(File)
212 : use pio, only : file_desc_t
213 : type(file_desc_t) :: File
214 1536 : return
215 : end subroutine chem_init_restart
216 : !================================================================================
217 0 : subroutine chem_reset_fluxes( fptr, cam_in )
218 : use camsrfexch, only : cam_in_t
219 :
220 : real(r8), pointer :: fptr(:,:) ! pointer into array data
221 : type(cam_in_t), intent(inout) :: cam_in(begchunk:endchunk)
222 :
223 0 : end subroutine chem_reset_fluxes
224 : !================================================================================
225 1489176 : subroutine chem_emissions( state, cam_in, pbuf )
226 0 : use camsrfexch, only: cam_in_t
227 : use physics_buffer, only: physics_buffer_desc
228 :
229 : ! Arguments:
230 :
231 : type(physics_state), intent(in) :: state ! Physics state variables
232 : type(cam_in_t), intent(inout) :: cam_in ! import state
233 : type(physics_buffer_desc), pointer :: pbuf(:) ! Physics buffer in chunk, for HEMCO
234 :
235 1489176 : end subroutine chem_emissions
236 : end module chemistry
|