Octopus
element.F90
Go to the documentation of this file.
1!! Copyright (C) 2015 X. Andrade
2!!
3!! This program is free software; you can redistribute it and/or modify
4!! it under the terms of the GNU General Public License as published by
5!! the Free Software Foundation; either version 2, or (at your option)
6!! any later version.
7!!
8!! This program is distributed in the hope that it will be useful,
9!! but WITHOUT ANY WARRANTY; without even the implied warranty of
10!! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11!! GNU General Public License for more details.
12!!
13!! You should have received a copy of the GNU General Public License
14!! along with this program; if not, write to the Free Software
15!! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16!! 02110-1301, USA.
17!!
18
19#include "global.h"
20
21module element_oct_m
22 use, intrinsic :: iso_fortran_env
23
24 implicit none
25
26 private
27 public :: &
28 element_t, &
35
36 type element_t
37 private
38 integer(int64) :: dummy
39 end type element_t
40
41 interface
42
43 ! -------------------------------------------------
44
45 subroutine element_init(self, symbol)
46 import :: element_t
47 implicit none
48
49 type(element_t), intent(out) :: self
50 character(len=*), intent(in) :: symbol
51 end subroutine element_init
52
53 ! -------------------------------------------------
54
55 subroutine element_end(self)
56 import :: element_t
57 implicit none
58
59 type(element_t), intent(inout) :: self
60 end subroutine element_end
61
62 ! ------------------------------------
63
64 real(real64) function element_mass(self)
65 use, intrinsic :: iso_fortran_env
66 import :: element_t
67 implicit none
68
69 type(element_t), intent(in) :: self
70 end function element_mass
71
72 ! ------------------------------------
73
74 real(real64) function element_vdw_radius(self)
75 use, intrinsic :: iso_fortran_env
76 import :: element_t
77 implicit none
78
79 type(element_t), intent(in) :: self
80 end function element_vdw_radius
81
82 ! ------------------------------------
83
84 integer function element_atomic_number(self)
85 import :: element_t
86 implicit none
87
88 type(element_t), intent(in) :: self
89 end function element_atomic_number
90
91 end interface
92
93
94contains
95
96 logical function element_valid(self) result(valid)
97 type(element_t), intent(in) :: self
98
99 interface
100 integer function element_valid_low(self)
101 import :: element_t
102 implicit none
103
104 type(element_t), intent(in) :: self
105 end function element_valid_low
106 end interface
107
108 valid = element_valid_low(self) /= 0
109 end function element_valid
110
111end module element_oct_m
112
113!! Local Variables:
114!! mode: f90
115!! coding: utf-8
116!! End:
logical function, public element_valid(self)
Definition: element.F90:190