load_gcp_param_api Function

public function load_gcp_param_api(verror, vmol, cmethod, cbasis) result(vgcp) bind(C, name=namespace//"load_gcp_param")

Create new error handle object

Arguments

Type IntentOptional Attributes Name
type(c_ptr), value :: verror
type(c_ptr), value :: vmol
character(kind=c_char, len=1), intent(in), optional :: cmethod(*)
character(kind=c_char, len=1), intent(in), optional :: cbasis(*)

Return Value type(c_ptr)


Source Code

function load_gcp_param_api(verror, vmol, cmethod, cbasis) &
      & result(vgcp) &
      & bind(C, name=namespace//"load_gcp_param")
   type(c_ptr), value :: verror
   type(vp_error), pointer :: error
   type(c_ptr), value :: vmol
   type(vp_structure), pointer :: mol
   character(kind=c_char), intent(in), optional :: cmethod(*)
   character(len=:, kind=c_char), allocatable :: method
   character(kind=c_char), intent(in), optional :: cbasis(*)
   character(len=:, kind=c_char), allocatable :: basis
   type(vp_gcp), pointer :: gcp
   type(c_ptr) :: vgcp

   vgcp = c_null_ptr

   if (.not.c_associated(verror)) return
   call c_f_pointer(verror, error)

   if (.not.c_associated(vmol)) then
      call fatal_error(error%ptr, "Molecular structure data is missing")
      return
   end if
   call c_f_pointer(vmol, mol)

   if (present(cmethod)) call c_f_character(cmethod, method)
   if (present(cbasis)) call c_f_character(cbasis, basis)

   allocate(gcp)
   call get_gcp_param(gcp%ptr, mol%ptr, method, basis)
   vgcp = c_loc(gcp)

end function load_gcp_param_api