kim-api 2.3.0+AppleClang.AppleClang.GNU
An Application Programming Interface (API) for the Knowledgebase of Interatomic Models (KIM).
Loading...
Searching...
No Matches
kim_model_write_parameterized_model_module.f90
Go to the documentation of this file.
1!
2! KIM-API: An API for interatomic models
3! Copyright (c) 2013--2022, Regents of the University of Minnesota.
4! All rights reserved.
5!
6! Contributors:
7! Ryan S. Elliott
8!
9! SPDX-License-Identifier: LGPL-2.1-or-later
10!
11! This library is free software; you can redistribute it and/or
12! modify it under the terms of the GNU Lesser General Public
13! License as published by the Free Software Foundation; either
14! version 2.1 of the License, or (at your option) any later version.
15!
16! This library is distributed in the hope that it will be useful,
17! but WITHOUT ANY WARRANTY; without even the implied warranty of
18! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19! Lesser General Public License for more details.
20!
21! You should have received a copy of the GNU Lesser General Public License
22! along with this library; if not, write to the Free Software Foundation,
23! Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24!
25
26!
27! Release: This file is part of the kim-api-2.3.0 package.
28!
29
36 use, intrinsic :: iso_c_binding
37 implicit none
38 private
39
40 public &
41 ! Derived types
43 ! Constants
45 ! Routines
46 operator(.eq.), &
47 operator(.ne.), &
54
60 type, bind(c) :: kim_model_write_parameterized_model_handle_type
61 type(c_ptr) :: p = c_null_ptr
63
69
74 interface operator(.eq.)
75 module procedure kim_model_write_parameterized_model_handle_equal
76 end interface operator(.eq.)
77
82 interface operator(.ne.)
83 module procedure kim_model_write_parameterized_model_handle_not_equal
84 end interface operator(.ne.)
85
92 interface kim_get_path
93 module procedure kim_model_write_parameterized_model_get_path
94 end interface kim_get_path
95
104 end interface kim_get_model_name
105
114 end interface kim_set_parameter_file_name
115
123 module procedure &
125 end interface kim_get_model_buffer_pointer
126
135 end interface kim_log_entry
136
145 end interface kim_to_string
146
147contains
152 logical recursive function kim_model_write_parameterized_model_handle_equal( &
153 lhs, rhs)
154 implicit none
155 type(kim_model_write_parameterized_model_handle_type), intent(in) :: lhs
156 type(kim_model_write_parameterized_model_handle_type), intent(in) :: rhs
157
158 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p))) then
159 kim_model_write_parameterized_model_handle_equal = .true.
160 else
161 kim_model_write_parameterized_model_handle_equal = &
162 c_associated(lhs%p, rhs%p)
163 end if
164 end function kim_model_write_parameterized_model_handle_equal
165
170 logical recursive function &
171 kim_model_write_parameterized_model_handle_not_equal(lhs, rhs)
172 implicit none
173 type(kim_model_write_parameterized_model_handle_type), intent(in) :: lhs
174 type(kim_model_write_parameterized_model_handle_type), intent(in) :: rhs
175
176 kim_model_write_parameterized_model_handle_not_equal = .not. (lhs == rhs)
177 end function kim_model_write_parameterized_model_handle_not_equal
178
185 recursive subroutine kim_model_write_parameterized_model_get_path( &
186 model_write_parameterized_model_handle, path)
187 use kim_convert_string_module, only: kim_convert_c_char_ptr_to_string
188 use kim_interoperable_types_module, only: &
189 kim_model_write_parameterized_model_type
190 implicit none
191 interface
192 recursive subroutine get_path(model_write_parameterized_model, path) &
193 bind(c, name="KIM_ModelWriteParameterizedModel_GetPath")
194 use, intrinsic :: iso_c_binding
195 use kim_interoperable_types_module, only: &
196 kim_model_write_parameterized_model_type
197 implicit none
198 type(kim_model_write_parameterized_model_type), intent(in) &
199 :: model_write_parameterized_model
200 type(c_ptr), intent(out) :: path
201 end subroutine get_path
202 end interface
203 type(kim_model_write_parameterized_model_handle_type), intent(in) &
204 :: model_write_parameterized_model_handle
205 character(len=*, kind=c_char), intent(out) :: path
206 type(kim_model_write_parameterized_model_type), pointer &
207 :: model_write_parameterized_model
208
209 type(c_ptr) :: ppath
210
211 call c_f_pointer(model_write_parameterized_model_handle%p, &
212 model_write_parameterized_model)
213 call get_path(model_write_parameterized_model, ppath)
214 call kim_convert_c_char_ptr_to_string(ppath, path)
215 end subroutine kim_model_write_parameterized_model_get_path
216
224 model_write_parameterized_model_handle, model_name)
225 use kim_convert_string_module, only: kim_convert_c_char_ptr_to_string
226 use kim_interoperable_types_module, only: &
227 kim_model_write_parameterized_model_type
228 implicit none
229 interface
230 recursive subroutine get_model_name(model_write_parameterized_model, &
231 model_name) &
232 bind(c, name="KIM_ModelWriteParameterizedModel_GetModelName")
233 use, intrinsic :: iso_c_binding
234 use kim_interoperable_types_module, only: &
235 kim_model_write_parameterized_model_type
236 implicit none
237 type(kim_model_write_parameterized_model_type), intent(in) &
238 :: model_write_parameterized_model
239 type(c_ptr), intent(out) :: model_name
240 end subroutine get_model_name
241 end interface
242 type(kim_model_write_parameterized_model_handle_type), intent(in) &
243 :: model_write_parameterized_model_handle
244 character(len=*, kind=c_char), intent(out) :: model_name
245 type(kim_model_write_parameterized_model_type), pointer &
246 :: model_write_parameterized_model
247
248 type(c_ptr) :: pmodel_name
249
250 call c_f_pointer(model_write_parameterized_model_handle%p, &
251 model_write_parameterized_model)
252 call get_model_name(model_write_parameterized_model, pmodel_name)
253 call kim_convert_c_char_ptr_to_string(pmodel_name, model_name)
255
262 recursive subroutine &
264 model_write_parameterized_model_handle, file_name)
265 use kim_interoperable_types_module, only: &
266 kim_model_write_parameterized_model_type
267 implicit none
268 interface
269 recursive subroutine set_parameter_file_name( &
270 model_write_parameterized_model, file_name) &
271 bind(c, name="KIM_ModelWriteParameterizedModel_SetParameterFileName")
272 use, intrinsic :: iso_c_binding
273 use kim_interoperable_types_module, only: &
274 kim_model_write_parameterized_model_type
275 implicit none
276 type(kim_model_write_parameterized_model_type), intent(in) &
277 :: model_write_parameterized_model
278 character(c_char), intent(in) :: file_name(*)
279 end subroutine set_parameter_file_name
280 end interface
281 type(kim_model_write_parameterized_model_handle_type), intent(in) &
282 :: model_write_parameterized_model_handle
283 character(len=*, kind=c_char), intent(in) :: file_name
284 type(kim_model_write_parameterized_model_type), pointer &
285 :: model_write_parameterized_model
286
287 call c_f_pointer(model_write_parameterized_model_handle%p, &
288 model_write_parameterized_model)
289 call set_parameter_file_name(model_write_parameterized_model, &
290 trim(file_name)//c_null_char)
292
299 recursive subroutine &
301 model_write_parameterized_model_handle, ptr)
302 use kim_interoperable_types_module, only: &
303 kim_model_write_parameterized_model_type
304 implicit none
305 interface
306 recursive subroutine get_model_buffer_pointer( &
307 model_write_parameterized_model, ptr) &
308 bind(c, name="KIM_ModelCompute_GetModelBufferPointer")
309 use, intrinsic :: iso_c_binding
310 use kim_interoperable_types_module, only: &
311 kim_model_write_parameterized_model_type
312 implicit none
313 type(kim_model_write_parameterized_model_type), intent(in) &
314 :: model_write_parameterized_model
315 type(c_ptr), intent(out) :: ptr
316 end subroutine get_model_buffer_pointer
317 end interface
319 :: model_write_parameterized_model_handle
320 type(c_ptr), intent(out) :: ptr
321 type(kim_model_write_parameterized_model_type), pointer &
322 :: model_write_parameterized_model
323
324 call c_f_pointer(model_write_parameterized_model_handle%p, &
325 model_write_parameterized_model)
326 call get_model_buffer_pointer(model_write_parameterized_model, ptr)
328
336 model_write_parameterized_model_handle, log_verbosity, message)
338 use kim_interoperable_types_module, only: &
339 kim_model_write_parameterized_model_type
340 implicit none
341 interface
342 recursive subroutine log_entry( &
343 model_write_parameterized_model, log_verbosity, message, line_number, &
344 file_name) bind(c, name="KIM_ModelCompute_LogEntry")
345 use, intrinsic :: iso_c_binding
347 use kim_interoperable_types_module, only: &
348 kim_model_write_parameterized_model_type
349 implicit none
350 type(kim_model_write_parameterized_model_type), intent(in) &
351 :: model_write_parameterized_model
352 type(kim_log_verbosity_type), intent(in), value :: log_verbosity
353 character(c_char), intent(in) :: message(*)
354 integer(c_int), intent(in), value :: line_number
355 character(c_char), intent(in) :: file_name(*)
356 end subroutine log_entry
357 end interface
359 :: model_write_parameterized_model_handle
360 type(kim_log_verbosity_type), intent(in) :: log_verbosity
361 character(len=*, kind=c_char), intent(in) :: message
362 type(kim_model_write_parameterized_model_type), pointer &
363 :: model_write_parameterized_model
364
365 call c_f_pointer(model_write_parameterized_model_handle%p, &
366 model_write_parameterized_model)
367 call log_entry(model_write_parameterized_model, log_verbosity, &
368 trim(message)//c_null_char, 0, ""//c_null_char)
370
378 model_write_parameterized_model_handle, string)
379 use kim_convert_string_module, only: kim_convert_c_char_ptr_to_string
380 use kim_interoperable_types_module, only: &
381 kim_model_write_parameterized_model_type
382 implicit none
383 interface
384 type(c_ptr) recursive function model_write_parameterized_model_string( &
385 model_write_parameterized_model) &
386 bind(c, name="KIM_ModelCompute_ToString")
387 use, intrinsic :: iso_c_binding
388 use kim_interoperable_types_module, only: &
389 kim_model_write_parameterized_model_type
390 implicit none
391 type(kim_model_write_parameterized_model_type), intent(in) &
392 :: model_write_parameterized_model
394 end interface
395 type(kim_model_write_parameterized_model_handle_type), intent(in) &
396 :: model_write_parameterized_model_handle
397 character(len=*, kind=c_char), intent(out) :: string
398 type(kim_model_write_parameterized_model_type), pointer &
399 :: model_write_parameterized_model
400
401 type(c_ptr) :: p
402
403 call c_f_pointer(model_write_parameterized_model_handle%p, &
404 model_write_parameterized_model)
405 p = model_write_parameterized_model_string(model_write_parameterized_model)
406 call kim_convert_c_char_ptr_to_string(p, string)
Get the directory path where the parameterized model files should be written.
Write a log entry into the log file.
Get a string representing the internal state of the Model object.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.
Provides the interface to a KIM API Model object for use by models within their MODEL_ROUTINE_NAME::W...
recursive subroutine kim_model_write_parameterized_model_log_entry(model_write_parameterized_model_handle, log_verbosity, message)
Write a log entry into the log file.
recursive subroutine kim_model_write_parameterized_model_get_model_name(model_write_parameterized_model_handle, model_name)
Get the name of the new parameterized model.
recursive subroutine kim_model_write_parameterized_model_to_string(model_write_parameterized_model_handle, string)
Get a string representing the internal state of the Model object.
recursive subroutine kim_model_write_parameterized_model_set_parameter_file_name(model_write_parameterized_model_handle, file_name)
Set the file name for the next parameter file.
type(kim_model_write_parameterized_model_handle_type), save, public, protected kim_model_write_parameterized_model_null_handle
NULL handle for use in comparisons.
recursive subroutine kim_model_write_parameterized_model_get_model_buffer_pointer(model_write_parameterized_model_handle, ptr)
Get the Model's buffer pointer within the Model object.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.
Provides the interface to a KIM API Model object for use by models within their MODEL_ROUTINE_NAME::W...