QR_MUMPS
qrm_methods_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 
37 
38 
41  end interface _qrm_least_squares
42 
44  subroutine _qrm_least_squares2d(qrm_mat, b, x)
46  type(_qrm_spmat_type) :: qrm_mat
47  _qrm_data :: b(:,:), x(:,:)
48  end subroutine _qrm_least_squares2d
49  subroutine _qrm_least_squares1d(qrm_mat, b, x)
51  type(_qrm_spmat_type) :: qrm_mat
52  _qrm_data :: b(:), x(:)
53  end subroutine _qrm_least_squares1d
54  end interface qrm_least_squares
55 
56 
57 
58  interface _qrm_min_norm
59  module procedure _qrm_min_norm2dw, _qrm_min_norm1dw
60  end interface _qrm_min_norm
61 
62  interface qrm_min_norm
63  subroutine _qrm_min_norm2d(qrm_mat, b, x)
65  type(_qrm_spmat_type) :: qrm_mat
66  _qrm_data :: b(:,:), x(:,:)
67  end subroutine _qrm_min_norm2d
68  subroutine _qrm_min_norm1d(qrm_mat, b, x)
70  type(_qrm_spmat_type) :: qrm_mat
71  _qrm_data :: b(:), x(:)
72  end subroutine _qrm_min_norm1d
73  end interface qrm_min_norm
74 
75 
78  end interface _qrm_residual_norm
79 
81  subroutine _qrm_residual_norm2d(qrm_mat, b, x, nrm)
83  _qrm_real :: nrm(:)
84  type(_qrm_spmat_type) :: qrm_mat
85  _qrm_data :: b(:,:), x(:,:)
86  end subroutine _qrm_residual_norm2d
87  subroutine _qrm_residual_norm1d(qrm_mat, b, x, nrm)
89  _qrm_real :: nrm
90  type(_qrm_spmat_type) :: qrm_mat
91  _qrm_data :: b(:), x(:)
92  end subroutine _qrm_residual_norm1d
93  end interface qrm_residual_norm
94 
95 
96 
100  end interface _qrm_residual_orth
101 
103  subroutine _qrm_residual_orth2d(qrm_mat, r, nrm)
105  _qrm_real :: nrm(:)
106  type(_qrm_spmat_type) :: qrm_mat
107  _qrm_data :: r(:,:)
108  end subroutine _qrm_residual_orth2d
109  subroutine _qrm_residual_orth1d(qrm_mat, r, nrm)
111  _qrm_real :: nrm
112  type(_qrm_spmat_type) :: qrm_mat
113  _qrm_data :: r(:)
114  end subroutine _qrm_residual_orth1d
115  subroutine _qrm_residual_and_orth2d(qrm_mat, b, x, nrm)
117  _qrm_real :: nrm(:)
118  type(_qrm_spmat_type) :: qrm_mat
119  _qrm_data :: b(:,:), x(:,:)
120  end subroutine _qrm_residual_and_orth2d
121  subroutine _qrm_residual_and_orth1d(qrm_mat, b, x, nrm)
123  _qrm_real :: nrm
124  type(_qrm_spmat_type) :: qrm_mat
125  _qrm_data :: b(:), x(:)
126  end subroutine _qrm_residual_and_orth1d
127  end interface qrm_residual_orth
128 
129 
130 contains
131 
132  subroutine _qrm_least_squares2dw(qrm_mat, b, x)
134  type(_qrm_spmat_type) :: qrm_mat
135  _qrm_data :: b(:,:), x(:,:)
136  call _qrm_least_squares2d(qrm_mat, b, x)
137  return
138  end subroutine _qrm_least_squares2dw
139 
140  subroutine _qrm_least_squares1dw(qrm_mat, b, x)
142  type(_qrm_spmat_type) :: qrm_mat
143  _qrm_data :: b(:), x(:)
144  call _qrm_least_squares1d(qrm_mat, b, x)
145  return
146  end subroutine _qrm_least_squares1dw
147 
148 
149  subroutine _qrm_min_norm2dw(qrm_mat, b, x)
151  type(_qrm_spmat_type) :: qrm_mat
152  _qrm_data :: b(:,:), x(:,:)
153  call _qrm_min_norm2d(qrm_mat, b, x)
154  return
155  end subroutine _qrm_min_norm2dw
156 
157  subroutine _qrm_min_norm1dw(qrm_mat, b, x)
159  type(_qrm_spmat_type) :: qrm_mat
160  _qrm_data :: b(:), x(:)
161  call _qrm_min_norm1d(qrm_mat, b, x)
162  return
163  end subroutine _qrm_min_norm1dw
164 
165 
166  subroutine _qrm_residual_norm2dw(qrm_mat, b, x, nrm)
168  _qrm_real :: nrm(:)
169  type(_qrm_spmat_type) :: qrm_mat
170  _qrm_data :: b(:,:), x(:,:)
171  call _qrm_residual_norm2d(qrm_mat, b, x, nrm)
172  return
173  end subroutine _qrm_residual_norm2dw
174 
175  subroutine _qrm_residual_norm1dw(qrm_mat, b, x, nrm)
177  _qrm_real :: nrm
178  type(_qrm_spmat_type) :: qrm_mat
179  _qrm_data :: b(:), x(:)
180  call _qrm_residual_norm1d(qrm_mat, b, x, nrm)
181  return
182  end subroutine _qrm_residual_norm1dw
183 
184 
185 
186  subroutine _qrm_residual_orth2dw(qrm_mat, r, nrm)
188  _qrm_real :: nrm(:)
189  type(_qrm_spmat_type) :: qrm_mat
190  _qrm_data :: r(:,:)
191  call _qrm_residual_orth2d(qrm_mat, r, nrm)
192  return
193  end subroutine _qrm_residual_orth2dw
194 
195  subroutine _qrm_residual_orth1dw(qrm_mat, r, nrm)
197  _qrm_real :: nrm
198  type(_qrm_spmat_type) :: qrm_mat
199  _qrm_data :: r(:)
200  call _qrm_residual_orth1d(qrm_mat, r, nrm)
201  return
202  end subroutine _qrm_residual_orth1dw
203 
204  subroutine _qrm_residual_and_orth2dw(qrm_mat, b, x, nrm)
206  _qrm_real :: nrm(:)
207  type(_qrm_spmat_type) :: qrm_mat
208  _qrm_data :: b(:,:), x(:,:)
209  call _qrm_residual_and_orth2d(qrm_mat, b, x, nrm)
210  return
211  end subroutine _qrm_residual_and_orth2dw
212 
213  subroutine _qrm_residual_and_orth1dw(qrm_mat, b, x, nrm)
215  _qrm_real :: nrm
216  type(_qrm_spmat_type) :: qrm_mat
217  _qrm_data :: b(:), x(:)
218  call _qrm_residual_and_orth1d(qrm_mat, b, x, nrm)
219  return
220  end subroutine _qrm_residual_and_orth1dw
221 
222 
223 end module _qrm_methods_mod
subroutine _qrm_residual_norm1d(qrm_mat, b, x, nrm)
This routine computes the scaled norm of the residual.
subroutine _qrm_least_squares2d(qrm_mat, b, x)
This routine computes the least-squares solution of a problem.
subroutine _qrm_residual_norm1dw(qrm_mat, b, x, nrm)
subroutine _qrm_min_norm2d(qrm_mat, b, x)
This routine computes the min-norm solution of a problem.
subroutine _qrm_least_squares2dw(qrm_mat, b, x)
subroutine _qrm_residual_orth2d(qrm_mat, r, nrm)
This routine computes the scaled norm of the product A'*r for multiple residuals. ...
subroutine _qrm_residual_norm2dw(qrm_mat, b, x, nrm)
subroutine _qrm_residual_orth2dw(qrm_mat, r, nrm)
subroutine _qrm_residual_and_orth1d(qrm_mat, b, x, nrm)
This routine computes the scaled norm of the product A'*r.
subroutine _qrm_residual_and_orth2d(qrm_mat, b, x, nrm)
This routine computes the scaled norm of the product A'*r.
subroutine _qrm_residual_norm2d(qrm_mat, b, x, nrm)
This routine computes the scaled norm of multiple residuals.
subroutine _qrm_residual_orth1dw(qrm_mat, r, nrm)
subroutine _qrm_min_norm1d(qrm_mat, b, x)
This routine computes the min-norm solution of a problem.
subroutine _qrm_least_squares1d(qrm_mat, b, x)
This routine computes the least-squares solution of a problem.
This type defines the data structure used to store a matrix.
subroutine _qrm_residual_and_orth1dw(qrm_mat, b, x, nrm)
This module contains the definition of the basic sparse matrix type and of the associated methods...
subroutine _qrm_min_norm2dw(qrm_mat, b, x)
This module contains generic methods.
subroutine _qrm_residual_and_orth2dw(qrm_mat, b, x, nrm)
subroutine _qrm_min_norm1dw(qrm_mat, b, x)
subroutine _qrm_least_squares1dw(qrm_mat, b, x)
subroutine _qrm_residual_orth1d(qrm_mat, r, nrm)
This routine computes the scaled norm of the product A'*r.