@@ -109,4 +109,112 @@ subroutine f_scenario_init_env_state(scenario_ptr_c, env_state_ptr_c, &
109109
110110 end subroutine
111111
112+ subroutine f_scenario_aero_dist_emission (scenario_ptr_c , aero_dist_ptr_c , index ) bind(C)
113+
114+ type (c_ptr), intent (in ) :: scenario_ptr_c, aero_dist_ptr_c
115+ integer (c_int), intent (in ) :: index
116+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
117+ type (aero_dist_t), pointer :: aero_dist_ptr_f = > null ()
118+
119+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
120+ call c_f_pointer(aero_dist_ptr_c, aero_dist_ptr_f)
121+
122+ aero_dist_ptr_f = scenario_ptr_f% aero_emission(index + 1 )
123+
124+ end subroutine
125+
126+ subroutine f_scenario_aero_emission_n_times (scenario_ptr_c , n_times ) bind(C)
127+
128+ type (c_ptr), intent (in ) :: scenario_ptr_c
129+ integer (c_int), intent (out ) :: n_times
130+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
131+
132+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
133+
134+ n_times = size (scenario_ptr_f% aero_emission_time)
135+
136+ end subroutine
137+
138+ subroutine f_scenario_emission_rates (scenario_ptr_c , emission_rates , &
139+ n_times ) bind(C)
140+
141+ type (c_ptr), intent (in ) :: scenario_ptr_c
142+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
143+ integer (c_int) :: n_times
144+ real (c_double) :: emission_rates(n_times)
145+
146+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
147+
148+ emission_rates = scenario_ptr_f% aero_emission_rate_scale
149+
150+ end subroutine
151+
152+ subroutine f_scenario_emission_time (scenario_ptr_c , emission_time , &
153+ n_times ) bind(C)
154+
155+ type (c_ptr), intent (in ) :: scenario_ptr_c
156+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
157+ integer (c_int) :: n_times
158+ real (c_double) :: emission_time(n_times)
159+
160+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
161+
162+ emission_time = scenario_ptr_f% aero_emission_time
163+
164+ end subroutine
165+
166+ subroutine f_scenario_aero_dist_background (scenario_ptr_c , aero_dist_ptr_c , index ) bind(C)
167+
168+ type (c_ptr), intent (in ) :: scenario_ptr_c, aero_dist_ptr_c
169+ integer (c_int), intent (in ) :: index
170+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
171+ type (aero_dist_t), pointer :: aero_dist_ptr_f = > null ()
172+
173+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
174+ call c_f_pointer(aero_dist_ptr_c, aero_dist_ptr_f)
175+
176+ aero_dist_ptr_f = scenario_ptr_f% aero_background(index + 1 )
177+
178+ end subroutine
179+
180+ subroutine f_scenario_aero_background_n_times (scenario_ptr_c , n_times ) bind(C)
181+
182+ type (c_ptr), intent (in ) :: scenario_ptr_c
183+ integer (c_int), intent (out ) :: n_times
184+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
185+
186+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
187+
188+ n_times = size (scenario_ptr_f% aero_dilution_time)
189+
190+ end subroutine
191+
192+ subroutine f_scenario_aero_background_rate_scale (scenario_ptr_c , &
193+ aero_background_rate_scale , n_times ) bind(C)
194+
195+ type (c_ptr), intent (in ) :: scenario_ptr_c
196+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
197+ integer (c_int) :: n_times
198+ real (c_double) :: aero_background_rate_scale(n_times)
199+
200+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
201+
202+ aero_background_rate_scale = scenario_ptr_f% aero_dilution_rate
203+
204+ end subroutine
205+
206+ subroutine f_scenario_aero_background_time (scenario_ptr_c , aero_background_time , &
207+ n_times ) bind(C)
208+
209+ type (c_ptr), intent (in ) :: scenario_ptr_c
210+ type (scenario_t), pointer :: scenario_ptr_f = > null ()
211+ integer (c_int) :: n_times
212+ real (c_double) :: aero_background_time(n_times)
213+
214+ call c_f_pointer(scenario_ptr_c, scenario_ptr_f)
215+
216+ aero_background_time = scenario_ptr_f% aero_dilution_time
217+
218+ end subroutine
219+
112220end module
0 commit comments