11module pcmsolver
2-
3- use , intrinsic :: iso_c_binding, only: c_bool, c_char, c_double, c_int
2+
3+ use , intrinsic :: iso_c_binding
44
55 implicit none
66
@@ -24,32 +24,26 @@ module pcmsolver
2424 public pcmsolver_load_surface_function
2525 public pcmsolver_write_timings
2626
27- type, public , bind(C) :: cavityInput
27+ type, public , bind(C) :: PCMInput
28+ character (kind= c_char, len= 1 ) :: cavity_type(8 )
2829 integer (c_int) :: patch_level
2930 real (c_double) :: coarsity
3031 real (c_double) :: area
3132 real (c_double) :: min_distance
3233 integer (c_int) :: der_order
33- character (kind= c_char, len= 1 ) :: cavity_type(8 )
3434 logical (c_bool) :: scaling
35+ character (kind= c_char, len= 1 ) :: radii_set(8 )
3536 character (kind= c_char, len= 1 ) :: restart_name(20 )
3637 real (c_double) :: min_radius
37- character (kind= c_char, len= 1 ) :: radii_set(8 )
38- end type
39-
40- type, public , bind(C) :: solverInput
4138 character (kind= c_char, len= 1 ) :: solver_type(7 )
42- real (c_double) :: correction
4339 character (kind= c_char, len= 1 ) :: solvent(16 )
44- real (c_double) :: probe_radius
4540 character (kind= c_char, len= 1 ) :: equation_type(11 )
46- end type
47-
48- type, public , bind(C) :: greenInput
41+ real (c_double) :: correction
42+ real (c_double) :: probe_radius
4943 character (kind= c_char, len= 1 ) :: inside_type(7 )
5044 real (c_double) :: outside_epsilon
5145 character (kind= c_char, len= 1 ) :: outside_type(22 )
52- end type
46+ end type PCMInput
5347
5448 public PCMSOLVER_READER_OWN
5549 public PCMSOLVER_READER_HOST
@@ -59,65 +53,66 @@ module pcmsolver
5953 end enum
6054
6155 interface pcmsolver_new
62- function pcmsolver_new (input_reading , nr_nuclei , charges , coordinates , symmetry_info ) result(context) bind(C)
63- use , intrinsic :: iso_c_binding, only: c_int, c_double, c_ptr
56+ function pcmsolver_new (input_reading , nr_nuclei , charges , coordinates , symmetry_info , host_input ) result(context) bind(C)
57+ import
6458 integer (c_int), value :: input_reading
6559 integer (c_int), value :: nr_nuclei
66- real (c_double), intent (out ) :: charges(* )
67- real (c_double), intent (out ) :: coordinates(* )
68- integer (c_int), intent (out ) :: symmetry_info(* )
60+ real (c_double), intent (in ) :: charges(* )
61+ real (c_double), intent (in ) :: coordinates(* )
62+ integer (c_int), intent (in ) :: symmetry_info(* )
63+ type (PCMInput), intent (in ) :: host_input
6964 type (c_ptr) :: context
7065 end function pcmsolver_new
7166 end interface pcmsolver_new
7267
7368 interface pcmsolver_delete
7469 subroutine pcmsolver_delete (context ) bind(C)
75- use , intrinsic :: iso_c_binding, only: c_ptr
70+ import
7671 type (c_ptr), value :: context
7772 end subroutine pcmsolver_delete
7873 end interface pcmsolver_delete
7974
8075 interface pcmsolver_is_compatible_library
8176 function pcmsolver_is_compatible_library () result(compatible) bind(C)
82- use , intrinsic :: iso_c_binding, only: c_bool
77+ import
8378 logical (c_bool) :: compatible
8479 end function pcmsolver_is_compatible_library
8580 end interface pcmsolver_is_compatible_library
8681
8782 interface pcmsolver_print
8883 subroutine pcmsolver_print (context ) bind(C)
89- use , intrinsic :: iso_c_binding, only: c_ptr
84+ import
9085 type (c_ptr), value :: context
9186 end subroutine pcmsolver_print
9287 end interface pcmsolver_print
9388
9489 interface pcmsolver_get_cavity_size
9590 function pcmsolver_get_cavity_size (context ) result(nr_points) bind(C)
96- use , intrinsic :: iso_c_binding, only: c_ptr, c_size_t
91+ import
9792 type (c_ptr), value :: context
9893 integer (c_size_t) :: nr_points
9994 end function pcmsolver_get_cavity_size
10095 end interface pcmsolver_get_cavity_size
10196
10297 interface pcmsolver_get_irreducible_cavity_size
10398 function pcmsolver_get_irreducible_cavity_size (context ) result(nr_points_irr) bind(C)
104- use , intrinsic :: iso_c_binding, only: c_ptr, c_size_t
99+ import
105100 type (c_ptr), value :: context
106101 integer (c_size_t) :: nr_points_irr
107102 end function pcmsolver_get_irreducible_cavity_size
108103 end interface pcmsolver_get_irreducible_cavity_size
109104
110105 interface pcmsolver_get_centers
111106 subroutine pcmsolver_get_centers (context , centers ) bind(C)
112- use , intrinsic :: iso_c_binding, only: c_ptr, c_double
107+ import
113108 type (c_ptr), value :: context
114109 real (c_double), intent (inout ) :: centers(* )
115110 end subroutine pcmsolver_get_centers
116111 end interface pcmsolver_get_centers
117112
118113 interface pcmsolver_get_center
119114 subroutine pcmsolver_get_center (context , its , center ) bind(C)
120- use , intrinsic :: iso_c_binding, only: c_ptr, c_int, c_double
115+ import
121116 type (c_ptr), value :: context
122117 integer (c_int), value, intent (in ) :: its
123118 real (c_double), intent (inout ) :: center(* )
@@ -126,7 +121,7 @@ end subroutine pcmsolver_get_center
126121
127122 interface pcmsolver_compute_asc
128123 subroutine pcmsolver_compute_asc (context , mep_name , asc_name , irrep ) bind(C)
129- use , intrinsic :: iso_c_binding, only: c_ptr, c_char, c_int
124+ import
130125 type (c_ptr), value :: context
131126 character (c_char), intent (in ) :: mep_name, asc_name
132127 integer (c_int), value, intent (in ) :: irrep
@@ -135,7 +130,7 @@ end subroutine pcmsolver_compute_asc
135130
136131 interface pcmsolver_compute_response_asc
137132 subroutine pcmsolver_compute_response_asc (context , mep_name , asc_name , irrep ) bind(C)
138- use , intrinsic :: iso_c_binding, only: c_ptr, c_char, c_int
133+ import
139134 type (c_ptr), value :: context
140135 character (c_char), intent (in ) :: mep_name, asc_name
141136 integer (c_int), value, intent (in ) :: irrep
@@ -144,16 +139,16 @@ end subroutine pcmsolver_compute_response_asc
144139
145140 interface pcmsolver_compute_polarization_energy
146141 function pcmsolver_compute_polarization_energy (context , mep_name , asc_name ) result(energy) bind(C)
147- use , intrinsic :: iso_c_binding, only: c_ptr, c_char, c_double
142+ import
148143 type (c_ptr), value :: context
149144 character (c_char), intent (in ) :: mep_name, asc_name
150145 real (c_double) :: energy
151146 end function pcmsolver_compute_polarization_energy
152147 end interface pcmsolver_compute_polarization_energy
153-
148+
154149 interface pcmsolver_get_surface_function
155150 subroutine pcmsolver_get_surface_function (context , f_size , values , name ) bind(C)
156- use , intrinsic :: iso_c_binding, only: c_ptr, c_char, c_size_t, c_double
151+ import
157152 type (c_ptr), value :: context
158153 integer (c_size_t), value, intent (in ) :: f_size
159154 real (c_double), intent (inout ) :: values(* )
@@ -163,7 +158,7 @@ end subroutine pcmsolver_get_surface_function
163158
164159 interface pcmsolver_set_surface_function
165160 subroutine pcmsolver_set_surface_function (context , f_size , values , name ) bind(C)
166- use , intrinsic :: iso_c_binding, only: c_ptr, c_char, c_size_t, c_double
161+ import
167162 type (c_ptr), value :: context
168163 integer (c_size_t), value, intent (in ) :: f_size
169164 real (c_double), intent (in ) :: values(* )
@@ -173,30 +168,30 @@ end subroutine pcmsolver_set_surface_function
173168
174169 interface pcmsolver_save_surface_functions
175170 subroutine pcmsolver_save_surface_functions (context ) bind(C)
176- use , intrinsic :: iso_c_binding, only: c_ptr
171+ import
177172 type (c_ptr), value :: context
178173 end subroutine pcmsolver_save_surface_functions
179174 end interface pcmsolver_save_surface_functions
180175
181176 interface pcmsolver_save_surface_function
182177 subroutine pcmsolver_save_surface_function (context , name ) bind(C)
183- use , intrinsic :: iso_c_binding, only: c_ptr, c_char
178+ import
184179 type (c_ptr), value :: context
185180 character (c_char), intent (in ) :: name
186181 end subroutine pcmsolver_save_surface_function
187182 end interface pcmsolver_save_surface_function
188183
189184 interface pcmsolver_load_surface_function
190185 subroutine pcmsolver_load_surface_function (context , name ) bind(C)
191- use , intrinsic :: iso_c_binding, only: c_ptr, c_char
186+ import
192187 type (c_ptr), value :: context
193188 character (c_char), intent (in ) :: name
194189 end subroutine pcmsolver_load_surface_function
195190 end interface pcmsolver_load_surface_function
196191
197192 interface pcmsolver_write_timings
198193 subroutine pcmsolver_write_timings (context ) bind(C)
199- use , intrinsic :: iso_c_binding, only: c_ptr
194+ import
200195 type (c_ptr), value :: context
201196 end subroutine pcmsolver_write_timings
202197 end interface pcmsolver_write_timings
0 commit comments