QR_MUMPS
 All Classes Files Functions Variables Enumerations Enumerator Pages
dqrm_solve_mod.F90
Go to the documentation of this file.
1 !! ##############################################################################################
2 !!
3 !! Copyright 2012 CNRS, INPT
4 !!
5 !! This file is part of qr_mumps.
6 !!
7 !! qr_mumps is free software: you can redistribute it and/or modify
8 !! it under the terms of the GNU Lesser General Public License as
9 !! published by the Free Software Foundation, either version 3 of
10 !! the License, or (at your option) any later version.
11 !!
12 !! qr_mumps is distributed in the hope that it will be useful,
13 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
14 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 !! GNU Lesser General Public License for more details.
16 !!
17 !! You can find a copy of the GNU Lesser General Public License
18 !! in the qr_mumps/doc directory.
19 !!
20 !! ##############################################################################################
21 
22 
23 !! ##############################################################################################
33 
34 
38 
40  interface qrm_apply_q
41  subroutine dqrm_apply_q(qrm_mat, b)
42  use dqrm_spmat_mod
43  type(dqrm_spmat_type), target :: qrm_mat
44  real(kind(1.d0)), intent(inout) :: b(:,:)
45  end subroutine dqrm_apply_q
46  end interface
47 
49  interface qrm_apply_qt
50  subroutine dqrm_apply_qt(qrm_mat, b)
51  use dqrm_spmat_mod
52  type(dqrm_spmat_type) :: qrm_mat
53  real(kind(1.d0)) :: b(:,:)
54  end subroutine dqrm_apply_qt
55  end interface
56 
57 
62  interface dqrm_apply
63  module procedure dqrm_apply2dw, dqrm_apply1dw
64  end interface dqrm_apply
65 
66 
67  ! !> @brief Generic interface for the
68  ! !! @link ::dqrm_apply @endlink and
69  ! !! @link ::dqrm_apply1d @endlink routines
70  ! !!
71  interface qrm_apply
72  subroutine dqrm_apply2d(qrm_mat, transp, b)
73  use dqrm_spmat_mod
74  type(dqrm_spmat_type), intent(in) :: qrm_mat
75  real(kind(1.d0)), intent(inout) :: b(:,:)
76  character(len=*), intent(in) :: transp
77  end subroutine dqrm_apply2d
78  subroutine dqrm_apply1d(qrm_mat, transp, b)
79  use dqrm_spmat_mod
80  type(dqrm_spmat_type), intent(in) :: qrm_mat
81  real(kind(1.d0)), intent(inout) :: b(:)
82  character(len=*), intent(in) :: transp
83  end subroutine dqrm_apply1d
84  end interface qrm_apply
85 
87  interface qrm_solve_r
88  subroutine dqrm_solve_r(qrm_mat, b, x)
89  use dqrm_spmat_mod
90  type(dqrm_spmat_type), target :: qrm_mat
91  real(kind(1.d0)), intent(inout) :: b(:,:)
92  real(kind(1.d0)), intent(out) :: x(:,:)
93  end subroutine dqrm_solve_r
94  end interface
95 
97  interface qrm_solve_rt
98  subroutine dqrm_solve_rt(qrm_mat, b, x)
99  use dqrm_spmat_mod
100  type(dqrm_spmat_type), target :: qrm_mat
101  real(kind(1.d0)), intent(inout) :: b(:,:)
102  real(kind(1.d0)), intent(out) :: x(:,:)
103  end subroutine dqrm_solve_rt
104  end interface
105 
110  interface dqrm_solve
111  module procedure dqrm_solve1dw, dqrm_solve2dw
112  end interface
113 
118  interface qrm_solve
119  subroutine dqrm_solve2d(qrm_mat, transp, b, x)
120  use dqrm_spmat_mod
121  type(dqrm_spmat_type), target :: qrm_mat
122  real(kind(1.d0)), intent(inout) :: b(:,:)
123  real(kind(1.d0)), intent(out) :: x(:,:)
124  character(len=*) :: transp
125  end subroutine dqrm_solve2d
126  subroutine dqrm_solve1d(qrm_mat, transp, b, x)
127  use dqrm_spmat_mod
128  type(dqrm_spmat_type), target :: qrm_mat
129  real(kind(1.d0)), intent(inout) :: b(:)
130  real(kind(1.d0)), intent(out) :: x(:)
131  character(len=*) :: transp
132  end subroutine dqrm_solve1d
133  end interface
134 
137  subroutine dqrm_solve_sing_front(qrm_mat, b, x, trans)
138  use dqrm_spmat_mod
139  use dqrm_fdata_mod
140  type(dqrm_spmat_type), target :: qrm_mat
141  real(kind(1.d0)), intent(inout) :: b(:,:)
142  real(kind(1.d0)), intent(inout) :: x(:,:)
143  character :: trans
144  end subroutine dqrm_solve_sing_front
145  end interface
146 
147 contains
148 
149  subroutine dqrm_apply2dw(qrm_mat, transp, b)
150  use dqrm_spmat_mod
151  type(dqrm_spmat_type), intent(in) :: qrm_mat
152  real(kind(1.d0)), intent(inout) :: b(:,:)
153  character(len=*), intent(in) :: transp
154  call dqrm_apply2d(qrm_mat, transp, b)
155  return
156  end subroutine dqrm_apply2dw
157 
158  subroutine dqrm_apply1dw(qrm_mat, transp, b)
159  use dqrm_spmat_mod
160  type(dqrm_spmat_type), intent(in) :: qrm_mat
161  real(kind(1.d0)), intent(inout) :: b(:)
162  character(len=*), intent(in) :: transp
163  call dqrm_apply1d(qrm_mat, transp, b)
164  return
165  end subroutine dqrm_apply1dw
166 
167  subroutine dqrm_solve2dw(qrm_mat, transp, b, x)
168  use dqrm_spmat_mod
169  type(dqrm_spmat_type), target :: qrm_mat
170  real(kind(1.d0)), intent(inout) :: b(:,:)
171  real(kind(1.d0)), intent(out) :: x(:,:)
172  character(len=*) :: transp
173  call dqrm_solve2d(qrm_mat, transp, b, x)
174  return
175  end subroutine dqrm_solve2dw
176 
177  subroutine dqrm_solve1dw(qrm_mat, transp, b, x)
178  use dqrm_spmat_mod
179  type(dqrm_spmat_type), target :: qrm_mat
180  real(kind(1.d0)), intent(inout) :: b(:)
181  real(kind(1.d0)), intent(out) :: x(:)
182  character(len=*) :: transp
183  call dqrm_solve1d(qrm_mat, transp, b, x)
184  return
185  end subroutine dqrm_solve1dw
186 
187 
188 end module dqrm_solve_mod
subroutine dqrm_apply_qt(qrm_mat, b)
This function applies Q' to a vector/matrix.
subroutine dqrm_solve2d(qrm_mat, transp, b, x)
This function solves for R or R' against multiple vectors.
Definition: dqrm_solve.F90:50
subroutine dqrm_solve_sing_front(qrm_mat, b, x, trans)
This function handles the front containing the singletons during the solve for R or R'...
This module contains all the interfaces for the typed routines in the solve phase.
subroutine dqrm_apply1d(qrm_mat, transp, b)
This function applies Q or Q^T to a single vector.
Definition: dqrm_apply.F90:135
subroutine dqrm_apply1dw(qrm_mat, transp, b)
subroutine dqrm_apply2dw(qrm_mat, transp, b)
subroutine dqrm_solve2dw(qrm_mat, transp, b, x)
Generic interface for the ::dqrm_solve_r routine.
subroutine dqrm_solve_rt(qrm_mat, b, x)
This function solves for R' against multiple vectors.
subroutine dqrm_apply2d(qrm_mat, transp, b)
This function applies Q or Q^T to a set of vectors.
Definition: dqrm_apply.F90:47
Generic interface for the ::dqrm_solve_sing_front routine.
This module contains the definition of the basic sparse matrix type and of the associated methods...
Generic interface for the ::dqrm_apply_q routine.
This module contains the definition of all the data related to the factorization phase.
Generic interface for the ::dqrm_solve and ::dqrm_solve1d routines.
Generic interface for the ::dqrm_apply_qt routine.
Generic interface for the ::dqrm_solve and ::dqrm_solve1d routines.
subroutine dqrm_solve_r(qrm_mat, b, x)
This function solves for R against multiple vectors.
Generic interface for the ::dqrm_apply and ::dqrm_apply1d routines.
subroutine dqrm_solve1dw(qrm_mat, transp, b, x)
This type defines the data structure used to store a matrix.
subroutine dqrm_apply_q(qrm_mat, b)
This function applies Q to a vector/matrix.
Generic interface for the ::dqrm_solve_rt routine.
subroutine dqrm_solve1d(qrm_mat, transp, b, x)
This function solves for R or R' against a single vector.
Definition: dqrm_solve.F90:128