Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
subroutine add_ecpint(basis,coord,hcore)real(real64),contiguous,intent(in)::coord(:,:)type(basis_set),intent(in)::basisreal(real64),contiguous,intent(inout)::hcore(:)type(c_ptr)::integratortype(ecp_result)::result_ptrreal(c_double),pointer::libecp_res(:)integer::i,j,cinteger(c_int)::driv_orderif(.not.(basis%ecp_params%is_ecp))then return end ifdriv_order=0call set_integrator(integrator,basis,coord,driv_order)result_ptr=compute_integrals(integrator)call c_f_pointer(result_ptr%data,libecp_res,[result_ptr%size])call transform_matrix(basis,libecp_res)c=0do i=1,basis%nbfdo j=1,ic=c+1hcore(c)=libecp_res((i-1)*basis%nbf+j)+hcore(c)end do end doresult_ptr%data=c_null_ptrresult_ptr%size=0nullify(libecp_res)call free_integrator(integrator)call free_result(result_ptr)end subroutine add_ecpint