4 #include "pastix_fortran.h" 
    5 #include "sll_working_precision.h" 
    6 #include "sll_memory.h" 
   26       pastix_data_ptr_t        :: pastix_data 
 
   28       pastix_int_t, 
pointer :: colptr(:)   
 
   29       pastix_int_t, 
pointer :: row(:)      
 
   30       pastix_float_t, 
pointer :: avals(:)    
 
   31       pastix_int_t, 
pointer :: perm(:)     
 
   32       pastix_int_t, 
pointer :: invp(:)     
 
   33       pastix_float_t, 
pointer :: rhs(:)      
 
   35       pastix_int_t             :: iparm(iparm_size) 
 
   36       double precision         :: dparm(dparm_size) 
 
   60    subroutine init_pastix(self, n, nnzeros, row_ptr, col_ind, val)
 
   63       sll_int32, 
intent(in)         :: n
 
   64       pastix_int_t, 
intent(in)         :: nnzeros
 
   65       sll_int32, 
intent(in), 
target :: row_ptr(:)
 
   66       sll_int32, 
intent(in), 
target :: col_ind(:)
 
   67       sll_real64, 
intent(in), 
target :: val(:)
 
   83       self%verbose = api_verbose_no
 
   86       self%colptr => row_ptr
 
   89       sll_clear_allocate(self%rhs(nnzeros), error)
 
   95       self%iparm(iparm_modify_parameter) = api_no
 
   96       self%iparm(iparm_start_task) = api_task_init
 
   97       self%iparm(iparm_end_task) = api_task_init
 
   99       sll_allocate(self%perm(n), error)
 
  100       sll_allocate(self%invp(n), error)
 
  102       call pastix_fortran(self%pastix_data, comm, n, self%colptr, self%row, &
 
  103                           self%avals, self%perm, self%invp, self%rhs, &
 
  104                           self%nrhs, self%iparm, self%dparm)
 
  108       self%iparm(iparm_thread_nbr) = self%nbthread
 
  109       self%iparm(iparm_verbose) = self%verbose
 
  111       self%iparm(iparm_sym) = api_sym_no 
 
  112       self%iparm(iparm_factorization) = api_fact_lu 
 
  114       self%iparm(iparm_matrix_verification) = api_yes
 
  117       self%iparm(iparm_transpose_solve) = api_yes
 
  128       self%iparm(iparm_start_task) = api_task_ordering
 
  129       self%iparm(iparm_end_task) = api_task_analyse
 
  131       call pastix_fortran(self%pastix_data, &
 
  145       self%iparm(iparm_start_task) = api_task_numfact
 
  146       self%iparm(iparm_end_task) = api_task_numfact
 
  148       call pastix_fortran(self%pastix_data, &
 
  166       sll_real64, 
dimension(:), 
target :: 
sol 
  174       self%iparm(iparm_start_task) = api_task_solve
 
  175       self%iparm(iparm_end_task) = api_task_refine
 
  177       call pastix_fortran(self%pastix_data, comm, &
 
  178                           self%ncols, self%colptr, self%row, &
 
  179                           self%avals, self%perm, self%invp, &
 
  180                           self%rhs, self%nrhs, self%iparm, self%dparm)
 
  189       sll_real64, 
dimension(:) :: rhs
 
  190       sll_real64, 
dimension(:) :: 
sol 
  198       self%iparm(iparm_start_task) = api_task_solve
 
  199       self%iparm(iparm_end_task) = api_task_refine
 
  201       call pastix_fortran(self%pastix_data, comm, &
 
  202                           self%ncols, self%colptr, self%row, &
 
  203                           self%avals, self%perm, self%invp, &
 
  204                           self%rhs, self%nrhs, self%iparm, self%dparm)
 
  218       self%iparm(iparm_start_task) = api_task_clean
 
  219       self%iparm(iparm_end_task) = api_task_clean
 
  221       call pastix_fortran(self%pastix_data, comm, &
 
  222                           self%ncols, self%colptr, self%row, &
 
  223                           self%avals, self%perm, self%invp, &
 
  224                           self%rhs, self%nrhs, self%iparm, self%dparm)
 
  226       deallocate (self%colptr)
 
  227       deallocate (self%row)
 
  228       deallocate (self%avals)
 
  229       deallocate (self%perm)
 
  230       deallocate (self%invp)
 
  231       deallocate (self%rhs)
 
integer(kind=i32) function, public sll_f_get_collective_rank(col)
Determines the rank of the calling process in the communicator.
subroutine, public sll_s_boot_collective(required)
Starts the paralell environment.
type(sll_t_collective_t), pointer, public sll_v_world_collective
Control of subset assignment. Processes with the same color are in the same new communicator.
integer(kind=i32) function, public sll_f_get_collective_size(col)
Determines the size of the group associated with a communicator.
subroutine init_pastix(self, n, nnzeros, row_ptr, col_ind, val)
subroutine solve_pastix_without_rhs(self, sol)
subroutine factorize_pastix(self)
subroutine solve_pastix_with_rhs(self, rhs, sol)
subroutine free_pastix(self)
subroutine sol(vkgs, vkgd, vkgi, vfg, kld, vu, neq, mp, ifac, isol, nsym, energ, ier, nsky)