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 s_spline_matrix_dense__factorize(self)class(sll_t_spline_matrix_dense),intent(inout)::selfinteger::infocharacter(len=*),parameter::&this_sub_name="sll_t_spline_matrix_dense % factorize"character(len=256)::err_msgSLL_ASSERT(size(self%a,1)==self%n)SLL_ASSERT(size(self%a,2)==self%n)SLL_ASSERT(.not.self%factorized)! Perform LU decomposition using Lapack (A=PLU)call dgetrf(self%n,self%n,self%a,self%n,self%ipiv,info)if(info<0)then write(err_msg,'(i0,a)')abs(info),"-th argument had an illegal value"SLL_ERROR(this_sub_name,err_msg)else if(info>0)then write(err_msg,"('U(',i0,',',i0,')',a)")info,info,&" is exactly zero. The factorization has been completed, but the factor"&//" U is exactly singular, and division by zero will occur if it is used to"&//" solve a system of equations."SLL_ERROR(this_sub_name,err_msg)end ifself%factorized=.TRUE.end subroutine s_spline_matrix_dense__factorize