FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
hecmw_matrix_misc.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
2 ! Copyright (c) 2019 FrontISTR Commons
3 ! This software is released under the MIT License, see LICENSE.txt
4 !-------------------------------------------------------------------------------
5 
7  use hecmw_util
9  implicit none
10 
11  private
12  public :: hecmw_mat_clear
13  public :: hecmw_mat_clear_b
14  public :: hecmw_mat_init
15  public :: hecmw_mat_finalize
16  public :: hecmw_mat_copy_profile
17  public :: hecmw_mat_copy_val
18 
19  public :: hecmw_mat_set_iter
20  public :: hecmw_mat_get_iter
21  public :: hecmw_mat_set_method
22  public :: hecmw_mat_get_method
23  public :: hecmw_mat_set_precond
24  public :: hecmw_mat_get_precond
25  public :: hecmw_mat_set_nset
26  public :: hecmw_mat_get_nset
27  public :: hecmw_mat_set_iterpremax
28  public :: hecmw_mat_get_iterpremax
29  public :: hecmw_mat_set_nrest
30  public :: hecmw_mat_get_nrest
31  public :: hecmw_mat_set_nbfgs
32  public :: hecmw_mat_get_nbfgs
33  public :: hecmw_mat_set_scaling
34  public :: hecmw_mat_get_scaling
35  public :: hecmw_mat_set_penalized
36  public :: hecmw_mat_get_penalized
39  public :: hecmw_mat_set_mpc_method
40  public :: hecmw_mat_get_mpc_method
41  public :: hecmw_mat_set_estcond
42  public :: hecmw_mat_get_estcond
45  public :: hecmw_mat_set_iterlog
46  public :: hecmw_mat_get_iterlog
47  public :: hecmw_mat_set_timelog
48  public :: hecmw_mat_get_timelog
49  public :: hecmw_mat_set_dump
50  public :: hecmw_mat_get_dump
51  public :: hecmw_mat_set_dump_exit
52  public :: hecmw_mat_get_dump_exit
53  public :: hecmw_mat_set_usejad
54  public :: hecmw_mat_get_usejad
55  public :: hecmw_mat_set_ncolor_in
56  public :: hecmw_mat_get_ncolor_in
69 
70  public :: hecmw_mat_set_method2
71  public :: hecmw_mat_get_method2
78 
79  public :: hecmw_mat_set_solver_opt
80  public :: hecmw_mat_get_solver_opt
81 
82  public :: hecmw_mat_set_resid
83  public :: hecmw_mat_get_resid
84  public :: hecmw_mat_set_sigma_diag
85  public :: hecmw_mat_get_sigma_diag
86  public :: hecmw_mat_set_sigma
87  public :: hecmw_mat_get_sigma
88  public :: hecmw_mat_set_thresh
89  public :: hecmw_mat_get_thresh
90  public :: hecmw_mat_set_filter
91  public :: hecmw_mat_get_filter
92  public :: hecmw_mat_set_penalty
93  public :: hecmw_mat_get_penalty
96 
97  public :: hecmw_mat_diag_max
99  public :: hecmw_mat_substitute
100 
101  integer, parameter :: IDX_I_ITER = 1
102  integer, parameter :: IDX_I_METHOD = 2
103  integer, parameter :: IDX_I_PRECOND = 3
104  integer, parameter :: IDX_I_NSET = 4
105  integer, parameter :: IDX_I_ITERPREMAX = 5
106  integer, parameter :: IDX_I_NREST = 6
107  integer, parameter :: IDX_I_NBFGS = 60
108  integer, parameter :: IDX_I_SCALING = 7
109  integer, parameter :: IDX_I_PENALIZED = 11
110  integer, parameter :: IDX_I_PENALIZED_B = 12
111  integer, parameter :: IDX_I_MPC_METHOD = 13
112  integer, parameter :: IDX_I_ESTCOND = 14
113  integer, parameter :: IDX_I_CONTACT_ELIM = 15
114  integer, parameter :: IDX_I_ITERLOG = 21
115  integer, parameter :: IDX_I_TIMELOG = 22
116  integer, parameter :: IDX_I_DUMP = 31
117  integer, parameter :: IDX_I_DUMP_EXIT = 32
118  integer, parameter :: IDX_I_USEJAD = 33
119  integer, parameter :: IDX_I_NCOLOR_IN = 34
120  integer, parameter :: IDX_I_MAXRECYCLE_PRECOND = 35
121  integer, parameter :: IDX_I_NRECYCLE_PRECOND = 96
122  integer, parameter :: IDX_I_FLAG_NUMFACT = 97
123  integer, parameter :: IDX_I_FLAG_SYMBFACT = 98
124  integer, parameter :: IDX_I_SOLVER_TYPE = 99
125 
126  integer, parameter :: IDX_I_METHOD2 = 8
127  integer, parameter :: IDX_I_FLAG_CONVERGED = 81
128  integer, parameter :: IDX_I_FLAG_DIVERGED = 82
129  integer, parameter :: IDX_I_FLAG_MPCMATVEC = 83
130 
131  integer, parameter :: IDX_I_SOLVER_OPT_S = 41
132  integer, parameter :: IDX_I_SOLVER_OPT_E = 50
133 
134  integer, parameter :: IDX_R_RESID = 1
135  integer, parameter :: IDX_R_SIGMA_DIAG = 2
136  integer, parameter :: IDX_R_SIGMA = 3
137  integer, parameter :: IDX_R_THRESH = 4
138  integer, parameter :: IDX_R_FILTER = 5
139  integer, parameter :: IDX_R_PENALTY = 11
140  integer, parameter :: IDX_R_PENALTY_ALPHA = 12
141 
142 contains
143 
144  subroutine hecmw_mat_clear( hecMAT )
145  type(hecmwst_matrix) :: hecmat
146 
147  hecmat%D = 0.0d0
148  hecmat%AL = 0.0d0
149  hecmat%AU = 0.0d0
150  call hecmw_mat_set_penalized( hecmat, 0 )
151  call hecmw_mat_set_penalty_alpha( hecmat, 0.d0 )
152  end subroutine hecmw_mat_clear
153 
154  subroutine hecmw_mat_clear_b( hecMAT )
155  type(hecmwst_matrix) :: hecmat
156 
157  hecmat%B = 0.0d0
158  call hecmw_mat_set_penalized_b( hecmat, 0 )
159  end subroutine hecmw_mat_clear_b
160 
161  subroutine hecmw_mat_init( hecMAT )
162  type(hecmwst_matrix) :: hecmat
163 
164  call hecmw_nullify_matrix( hecmat )
165 
166  hecmat%Iarray = 0
167  hecmat%Rarray = 0.d0
168 
169  call hecmw_mat_set_iter( hecmat, 100 )
170  call hecmw_mat_set_method( hecmat, 1 )
171  call hecmw_mat_set_precond( hecmat, 1 )
172  call hecmw_mat_set_nset( hecmat, 0 )
173  call hecmw_mat_set_iterpremax( hecmat, 1 )
174  call hecmw_mat_set_nrest( hecmat, 10 )
175  call hecmw_mat_set_nbfgs( hecmat, 0 )
176  call hecmw_mat_set_scaling( hecmat, 0 )
177  call hecmw_mat_set_iterlog( hecmat, 0 )
178  call hecmw_mat_set_timelog( hecmat, 0 )
179  call hecmw_mat_set_dump( hecmat, 0 )
180  call hecmw_mat_set_dump_exit( hecmat, 0 )
181  call hecmw_mat_set_usejad( hecmat, 0 )
182  call hecmw_mat_set_ncolor_in( hecmat, 10 )
183  call hecmw_mat_set_estcond( hecmat, 0 )
184  call hecmw_mat_set_maxrecycle_precond( hecmat, 3 )
185 
186  call hecmw_mat_set_resid( hecmat, 1.d-8 )
187  call hecmw_mat_set_sigma_diag( hecmat, 1.d0 )
188  call hecmw_mat_set_sigma( hecmat, 0.d0 )
189  call hecmw_mat_set_thresh( hecmat, 0.10d0 )
190  call hecmw_mat_set_filter( hecmat, 0.10d0 )
191 
192  call hecmw_mat_set_penalized( hecmat, 0 )
193  call hecmw_mat_set_penalty( hecmat, 1.d+4 )
194  call hecmw_mat_set_penalty_alpha( hecmat, 0.d0 )
195  call hecmw_mat_set_mpc_method( hecmat, 0 )
196 
197  call hecmw_mat_reset_nrecycle_precond( hecmat )
198  call hecmw_mat_set_flag_numfact( hecmat, 1 )
199  call hecmw_mat_set_flag_symbfact( hecmat, 1 )
200  call hecmw_mat_set_solver_type( hecmat, 1 )
201  end subroutine hecmw_mat_init
202 
203  subroutine hecmw_mat_finalize( hecMAT )
204  type(hecmwst_matrix) :: hecmat
205  if (associated(hecmat%D)) deallocate(hecmat%D)
206  if (associated(hecmat%B)) deallocate(hecmat%B)
207  if (associated(hecmat%X)) deallocate(hecmat%X)
208  if (associated(hecmat%AL)) deallocate(hecmat%AL)
209  if (associated(hecmat%AU)) deallocate(hecmat%AU)
210  if (associated(hecmat%indexL)) deallocate(hecmat%indexL)
211  if (associated(hecmat%indexU)) deallocate(hecmat%indexU)
212  if (associated(hecmat%itemL)) deallocate(hecmat%itemL)
213  if (associated(hecmat%itemU)) deallocate(hecmat%itemU)
214  if (associated(hecmat%ALU)) deallocate(hecmat%ALU)
215  end subroutine hecmw_mat_finalize
216 
217  subroutine hecmw_mat_copy_profile( hecMATorg, hecMAT )
218  type(hecmwst_matrix), intent(in) :: hecmatorg
219  type(hecmwst_matrix), intent(inout) :: hecmat
220  hecmat%N = hecmatorg%N
221  hecmat%NP = hecmatorg%NP
222  hecmat%NDOF = hecmatorg%NDOF
223  hecmat%NPL = hecmatorg%NPL
224  hecmat%NPU = hecmatorg%NPU
225  allocate(hecmat%indexL(0:size(hecmatorg%indexL)-1))
226  allocate(hecmat%indexU(0:size(hecmatorg%indexU)-1))
227  allocate(hecmat%itemL (size(hecmatorg%itemL )))
228  allocate(hecmat%itemU (size(hecmatorg%itemU )))
229  allocate(hecmat%D (size(hecmatorg%D )))
230  allocate(hecmat%AL(size(hecmatorg%AL)))
231  allocate(hecmat%AU(size(hecmatorg%AU)))
232  allocate(hecmat%B (size(hecmatorg%B )))
233  allocate(hecmat%X (size(hecmatorg%X )))
234  hecmat%indexL = hecmatorg%indexL
235  hecmat%indexU = hecmatorg%indexU
236  hecmat%itemL = hecmatorg%itemL
237  hecmat%itemU = hecmatorg%itemU
238  hecmat%D = 0.d0
239  hecmat%AL = 0.d0
240  hecmat%AU = 0.d0
241  hecmat%B = 0.d0
242  hecmat%X = 0.d0
243  end subroutine hecmw_mat_copy_profile
244 
245  subroutine hecmw_mat_copy_val( hecMATorg, hecMAT )
246  type(hecmwst_matrix), intent(in) :: hecmatorg
247  type(hecmwst_matrix), intent(inout) :: hecmat
248  integer(kind=kint) :: ierr
249  integer(kind=kint) :: i
250  ierr = 0
251  if (hecmat%N /= hecmatorg%N) ierr = 1
252  if (hecmat%NP /= hecmatorg%NP) ierr = 1
253  if (hecmat%NDOF /= hecmatorg%NDOF) ierr = 1
254  if (hecmat%NPL /= hecmatorg%NPL) ierr = 1
255  if (hecmat%NPU /= hecmatorg%NPU) ierr = 1
256  if (ierr /= 0) then
257  write(0,*) 'ERROR: hecmw_mat_copy_val: different profile'
258  stop
259  endif
260  do i = 1, size(hecmat%D)
261  hecmat%D(i) = hecmatorg%D(i)
262  enddo
263  do i = 1, size(hecmat%AL)
264  hecmat%AL(i) = hecmatorg%AL(i)
265  enddo
266  do i = 1, size(hecmat%AU)
267  hecmat%AU(i) = hecmatorg%AU(i)
268  enddo
269  end subroutine hecmw_mat_copy_val
270 
271  subroutine hecmw_mat_set_iter( hecMAT, iter )
272  type(hecmwst_matrix) :: hecmat
273  integer(kind=kint) :: iter
274 
275  hecmat%Iarray(idx_i_iter) = iter
276  end subroutine hecmw_mat_set_iter
277 
278  function hecmw_mat_get_iter( hecMAT )
279  integer(kind=kint) :: hecmw_mat_get_iter
280  type(hecmwst_matrix) :: hecmat
281 
282  hecmw_mat_get_iter = hecmat%Iarray(idx_i_iter)
283  end function hecmw_mat_get_iter
284 
285  subroutine hecmw_mat_set_method( hecMAT, method )
286  type(hecmwst_matrix) :: hecmat
287  integer(kind=kint) :: method
288 
289  hecmat%Iarray(idx_i_method) = method
290  end subroutine hecmw_mat_set_method
291 
292  function hecmw_mat_get_method( hecMAT )
293  integer(kind=kint) :: hecmw_mat_get_method
294  type(hecmwst_matrix) :: hecmat
295 
296  hecmw_mat_get_method = hecmat%Iarray(idx_i_method)
297  end function hecmw_mat_get_method
298 
299  subroutine hecmw_mat_set_method2( hecMAT, method2 )
300  type(hecmwst_matrix) :: hecmat
301  integer(kind=kint) :: method2
302 
303  hecmat%Iarray(idx_i_method2) = method2
304  end subroutine hecmw_mat_set_method2
305 
306  function hecmw_mat_get_method2( hecMAT )
307  integer(kind=kint) :: hecmw_mat_get_method2
308  type(hecmwst_matrix) :: hecmat
309 
310  hecmw_mat_get_method2 = hecmat%Iarray(idx_i_method2)
311  end function hecmw_mat_get_method2
312 
313  subroutine hecmw_mat_set_precond( hecMAT, precond )
314  type(hecmwst_matrix) :: hecmat
315  integer(kind=kint) :: precond
316 
317  hecmat%Iarray(idx_i_precond) = precond
318  end subroutine hecmw_mat_set_precond
319 
320  function hecmw_mat_get_precond( hecMAT )
321  integer(kind=kint) :: hecmw_mat_get_precond
322  type(hecmwst_matrix) :: hecmat
323 
324  hecmw_mat_get_precond = hecmat%Iarray(idx_i_precond)
325  end function hecmw_mat_get_precond
326 
327  subroutine hecmw_mat_set_nset( hecMAT, nset )
328  type(hecmwst_matrix) :: hecmat
329  integer(kind=kint) :: nset
330 
331  hecmat%Iarray(idx_i_nset) = nset
332  end subroutine hecmw_mat_set_nset
333 
334  function hecmw_mat_get_nset( hecMAT )
335  integer(kind=kint) :: hecmw_mat_get_nset
336  type(hecmwst_matrix) :: hecmat
337 
338  hecmw_mat_get_nset = hecmat%Iarray(idx_i_nset)
339  end function hecmw_mat_get_nset
340 
341  subroutine hecmw_mat_set_iterpremax( hecMAT, iterpremax )
342  type(hecmwst_matrix) :: hecmat
343  integer(kind=kint) :: iterpremax
344 
345  if (iterpremax.lt.0) iterpremax= 0
346  if (iterpremax.gt.4) iterpremax= 4
347 
348  hecmat%Iarray(idx_i_iterpremax) = iterpremax
349  end subroutine hecmw_mat_set_iterpremax
350 
351  function hecmw_mat_get_iterpremax( hecMAT )
352  integer(kind=kint) :: hecmw_mat_get_iterpremax
353  type(hecmwst_matrix) :: hecmat
354 
355  hecmw_mat_get_iterpremax = hecmat%Iarray(idx_i_iterpremax)
356  end function hecmw_mat_get_iterpremax
357 
358  subroutine hecmw_mat_set_nrest( hecMAT, nrest )
359  type(hecmwst_matrix) :: hecmat
360  integer(kind=kint) :: nrest
361 
362  hecmat%Iarray(idx_i_nrest) = nrest
363  end subroutine hecmw_mat_set_nrest
364 
365  function hecmw_mat_get_nrest( hecMAT )
366  integer(kind=kint) :: hecmw_mat_get_nrest
367  type(hecmwst_matrix) :: hecmat
368 
369  hecmw_mat_get_nrest = hecmat%Iarray(idx_i_nrest)
370  end function hecmw_mat_get_nrest
371 
372  subroutine hecmw_mat_set_nbfgs( hecMAT, nbfgs )
373  type(hecmwst_matrix) :: hecmat
374  integer(kind=kint) :: nbfgs
375 
376  hecmat%Iarray(idx_i_nbfgs) = nbfgs
377  end subroutine hecmw_mat_set_nbfgs
378 
379  function hecmw_mat_get_nbfgs( hecMAT )
380  integer(kind=kint) :: hecmw_mat_get_nbfgs
381  type(hecmwst_matrix) :: hecmat
382 
383  hecmw_mat_get_nbfgs = hecmat%Iarray(idx_i_nbfgs)
384  end function hecmw_mat_get_nbfgs
385 
386  subroutine hecmw_mat_set_scaling( hecMAT, scaling )
387  type(hecmwst_matrix) :: hecmat
388  integer(kind=kint) :: scaling
389 
390  hecmat%Iarray(idx_i_scaling) = scaling
391  end subroutine hecmw_mat_set_scaling
392 
393  function hecmw_mat_get_scaling( hecMAT )
394  integer(kind=kint) :: hecmw_mat_get_scaling
395  type(hecmwst_matrix) :: hecmat
396 
397  hecmw_mat_get_scaling = hecmat%Iarray(idx_i_scaling)
398  end function hecmw_mat_get_scaling
399 
400  subroutine hecmw_mat_set_penalized( hecMAT, penalized )
401  type(hecmwst_matrix) :: hecmat
402  integer(kind=kint) :: penalized
403 
404  hecmat%Iarray(idx_i_penalized) = penalized
405  end subroutine hecmw_mat_set_penalized
406 
407  function hecmw_mat_get_penalized( hecMAT )
408  integer(kind=kint) :: hecmw_mat_get_penalized
409  type(hecmwst_matrix) :: hecmat
410 
411  hecmw_mat_get_penalized = hecmat%Iarray(idx_i_penalized)
412  end function hecmw_mat_get_penalized
413 
414  subroutine hecmw_mat_set_penalized_b( hecMAT, penalized_b )
415  type(hecmwst_matrix) :: hecmat
416  integer(kind=kint) :: penalized_b
417 
418  hecmat%Iarray(idx_i_penalized_b) = penalized_b
419  end subroutine hecmw_mat_set_penalized_b
420 
421  function hecmw_mat_get_penalized_b( hecMAT )
422  integer(kind=kint) :: hecmw_mat_get_penalized_b
423  type(hecmwst_matrix) :: hecmat
424 
425  hecmw_mat_get_penalized_b = hecmat%Iarray(idx_i_penalized_b)
426  end function hecmw_mat_get_penalized_b
427 
428  subroutine hecmw_mat_set_mpc_method( hecMAT, mpc_method )
429  type(hecmwst_matrix) :: hecmat
430  integer(kind=kint) :: mpc_method
431 
432  hecmat%Iarray(idx_i_mpc_method) = mpc_method
433  end subroutine hecmw_mat_set_mpc_method
434 
435  function hecmw_mat_get_mpc_method( hecMAT )
436  integer(kind=kint) :: hecmw_mat_get_mpc_method
437  type(hecmwst_matrix) :: hecmat
438 
439  hecmw_mat_get_mpc_method = hecmat%Iarray(idx_i_mpc_method)
440  end function hecmw_mat_get_mpc_method
441 
442  function hecmw_mat_get_estcond( hecMAT )
443  integer(kind=kint) :: hecmw_mat_get_estcond
444  type(hecmwst_matrix) :: hecmat
445  hecmw_mat_get_estcond = hecmat%Iarray(idx_i_estcond)
446  end function hecmw_mat_get_estcond
447 
448  subroutine hecmw_mat_set_estcond( hecMAT, estcond )
449  type(hecmwst_matrix) :: hecmat
450  integer(kind=kint) :: estcond
451  hecmat%Iarray(idx_i_estcond) = estcond
452  end subroutine hecmw_mat_set_estcond
453 
454  function hecmw_mat_get_contact_elim( hecMAT )
455  integer(kind=kint) :: hecmw_mat_get_contact_elim
456  type(hecmwst_matrix) :: hecmat
457  hecmw_mat_get_contact_elim = hecmat%Iarray(idx_i_contact_elim)
458  end function hecmw_mat_get_contact_elim
459 
460  subroutine hecmw_mat_set_contact_elim( hecMAT, contact_elim )
461  type(hecmwst_matrix) :: hecmat
462  integer(kind=kint) :: contact_elim
463  hecmat%Iarray(idx_i_contact_elim) = contact_elim
464  end subroutine hecmw_mat_set_contact_elim
465 
466  subroutine hecmw_mat_set_iterlog( hecMAT, iterlog )
467  type(hecmwst_matrix) :: hecmat
468  integer(kind=kint) :: iterlog
469 
470  hecmat%Iarray(idx_i_iterlog) = iterlog
471  end subroutine hecmw_mat_set_iterlog
472 
473  function hecmw_mat_get_iterlog( hecMAT )
474  integer(kind=kint) :: hecmw_mat_get_iterlog
475  type(hecmwst_matrix) :: hecmat
476 
477  hecmw_mat_get_iterlog = hecmat%Iarray(idx_i_iterlog)
478  end function hecmw_mat_get_iterlog
479 
480  subroutine hecmw_mat_set_timelog( hecMAT, timelog )
481  type(hecmwst_matrix) :: hecmat
482  integer(kind=kint) :: timelog
483 
484  hecmat%Iarray(idx_i_timelog) = timelog
485  end subroutine hecmw_mat_set_timelog
486 
487  function hecmw_mat_get_timelog( hecMAT )
488  integer(kind=kint) :: hecmw_mat_get_timelog
489  type(hecmwst_matrix) :: hecmat
490 
491  hecmw_mat_get_timelog = hecmat%Iarray(idx_i_timelog)
492  end function hecmw_mat_get_timelog
493 
494  function hecmw_mat_get_dump( hecMAT )
495  integer(kind=kint) :: hecmw_mat_get_dump
496  type(hecmwst_matrix) :: hecmat
497  hecmw_mat_get_dump = hecmat%Iarray(idx_i_dump)
498  end function hecmw_mat_get_dump
499 
500  subroutine hecmw_mat_set_dump( hecMAT, dump_type )
501  type(hecmwst_matrix) :: hecmat
502  integer(kind=kint) :: dump_type
503  hecmat%Iarray(idx_i_dump) = dump_type
504  end subroutine hecmw_mat_set_dump
505 
506  function hecmw_mat_get_dump_exit( hecMAT )
507  integer(kind=kint) :: hecmw_mat_get_dump_exit
508  type(hecmwst_matrix) :: hecmat
509  hecmw_mat_get_dump_exit = hecmat%Iarray(idx_i_dump_exit)
510  end function hecmw_mat_get_dump_exit
511 
512  subroutine hecmw_mat_set_dump_exit( hecMAT, dump_exit )
513  type(hecmwst_matrix) :: hecmat
514  integer(kind=kint) :: dump_exit
515  hecmat%Iarray(idx_i_dump_exit) = dump_exit
516  end subroutine hecmw_mat_set_dump_exit
517 
518  function hecmw_mat_get_usejad( hecMAT )
519  integer(kind=kint) :: hecmw_mat_get_usejad
520  type(hecmwst_matrix) :: hecmat
521  hecmw_mat_get_usejad = hecmat%Iarray(idx_i_usejad)
522  end function hecmw_mat_get_usejad
523 
524  subroutine hecmw_mat_set_usejad( hecMAT, usejad )
525  type(hecmwst_matrix) :: hecmat
526  integer(kind=kint) :: usejad
527  hecmat%Iarray(idx_i_usejad) = usejad
528  end subroutine hecmw_mat_set_usejad
529 
530  function hecmw_mat_get_ncolor_in( hecMAT )
531  integer(kind=kint) :: hecmw_mat_get_ncolor_in
532  type(hecmwst_matrix) :: hecmat
533  hecmw_mat_get_ncolor_in = hecmat%Iarray(idx_i_ncolor_in)
534  end function hecmw_mat_get_ncolor_in
535 
536  subroutine hecmw_mat_set_ncolor_in( hecMAT, ncolor_in )
537  type(hecmwst_matrix) :: hecmat
538  integer(kind=kint) :: ncolor_in
539  hecmat%Iarray(idx_i_ncolor_in) = ncolor_in
540  end subroutine hecmw_mat_set_ncolor_in
541 
542  function hecmw_mat_get_maxrecycle_precond( hecMAT )
543  integer(kind=kint) :: hecmw_mat_get_maxrecycle_precond
544  type(hecmwst_matrix) :: hecmat
545  hecmw_mat_get_maxrecycle_precond = hecmat%Iarray(idx_i_maxrecycle_precond)
547 
548  subroutine hecmw_mat_set_maxrecycle_precond( hecMAT, maxrecycle_precond )
549  type(hecmwst_matrix) :: hecmat
550  integer(kind=kint) :: maxrecycle_precond
551  if (maxrecycle_precond > 100) maxrecycle_precond = 100
552  hecmat%Iarray(idx_i_maxrecycle_precond) = maxrecycle_precond
553  end subroutine hecmw_mat_set_maxrecycle_precond
554 
555  function hecmw_mat_get_nrecycle_precond( hecMAT )
556  integer(kind=kint) :: hecmw_mat_get_nrecycle_precond
557  type(hecmwst_matrix) :: hecmat
558  hecmw_mat_get_nrecycle_precond = hecmat%Iarray(idx_i_nrecycle_precond)
559  end function hecmw_mat_get_nrecycle_precond
560 
561  subroutine hecmw_mat_reset_nrecycle_precond( hecMAT )
562  type(hecmwst_matrix) :: hecmat
563  hecmat%Iarray(idx_i_nrecycle_precond) = 0
564  end subroutine hecmw_mat_reset_nrecycle_precond
565 
566  subroutine hecmw_mat_incr_nrecycle_precond( hecMAT )
567  type(hecmwst_matrix) :: hecmat
568  hecmat%Iarray(idx_i_nrecycle_precond) = hecmat%Iarray(idx_i_nrecycle_precond) + 1
569  end subroutine hecmw_mat_incr_nrecycle_precond
570 
571  function hecmw_mat_get_flag_numfact( hecMAT )
572  integer(kind=kint) :: hecmw_mat_get_flag_numfact
573  type(hecmwst_matrix) :: hecmat
574  hecmw_mat_get_flag_numfact = hecmat%Iarray(idx_i_flag_numfact)
575  end function hecmw_mat_get_flag_numfact
576 
577  subroutine hecmw_mat_set_flag_numfact( hecMAT, flag_numfact )
578  type(hecmwst_matrix) :: hecmat
579  integer(kind=kint) :: flag_numfact
580  hecmat%Iarray(idx_i_flag_numfact) = flag_numfact
581  end subroutine hecmw_mat_set_flag_numfact
582 
583  function hecmw_mat_get_flag_symbfact( hecMAT )
584  integer(kind=kint) :: hecmw_mat_get_flag_symbfact
585  type(hecmwst_matrix) :: hecmat
586  hecmw_mat_get_flag_symbfact = hecmat%Iarray(idx_i_flag_symbfact)
587  end function hecmw_mat_get_flag_symbfact
588 
589  subroutine hecmw_mat_set_flag_symbfact( hecMAT, flag_symbfact )
590  type(hecmwst_matrix) :: hecmat
591  integer(kind=kint) :: flag_symbfact
592  hecmat%Iarray(idx_i_flag_symbfact) = flag_symbfact
593  end subroutine hecmw_mat_set_flag_symbfact
594 
595  subroutine hecmw_mat_clear_flag_symbfact( hecMAT )
596  type(hecmwst_matrix) :: hecmat
597  hecmat%Iarray(idx_i_flag_symbfact) = 0
598  end subroutine hecmw_mat_clear_flag_symbfact
599 
600  function hecmw_mat_get_solver_type( hecMAT )
601  integer(kind=kint) :: hecmw_mat_get_solver_type
602  type(hecmwst_matrix) :: hecmat
603  hecmw_mat_get_solver_type = hecmat%Iarray(idx_i_solver_type)
604  end function hecmw_mat_get_solver_type
605 
606  subroutine hecmw_mat_set_solver_type( hecMAT, solver_type )
607  type(hecmwst_matrix) :: hecmat
608  integer(kind=kint) :: solver_type
609  hecmat%Iarray(idx_i_solver_type) = solver_type
610  end subroutine hecmw_mat_set_solver_type
611 
612  subroutine hecmw_mat_set_flag_converged( hecMAT, flag_converged )
613  type(hecmwst_matrix) :: hecmat
614  integer(kind=kint) :: flag_converged
615  hecmat%Iarray(idx_i_flag_converged) = flag_converged
616  end subroutine hecmw_mat_set_flag_converged
617 
618  function hecmw_mat_get_flag_converged( hecMAT )
619  integer(kind=kint) :: hecmw_mat_get_flag_converged
620  type(hecmwst_matrix) :: hecmat
621  hecmw_mat_get_flag_converged = hecmat%Iarray(idx_i_flag_converged)
622  end function hecmw_mat_get_flag_converged
623 
624  subroutine hecmw_mat_set_flag_diverged( hecMAT, flag_diverged )
625  type(hecmwst_matrix) :: hecmat
626  integer(kind=kint) :: flag_diverged
627  hecmat%Iarray(idx_i_flag_diverged) = flag_diverged
628  end subroutine hecmw_mat_set_flag_diverged
629 
630  function hecmw_mat_get_flag_diverged( hecMAT )
631  integer(kind=kint) :: hecmw_mat_get_flag_diverged
632  type(hecmwst_matrix) :: hecmat
633  hecmw_mat_get_flag_diverged = hecmat%Iarray(idx_i_flag_diverged)
634  end function hecmw_mat_get_flag_diverged
635 
636  subroutine hecmw_mat_set_flag_mpcmatvec( hecMAT, flag_mpcmatvec )
637  type(hecmwst_matrix) :: hecmat
638  integer(kind=kint) :: flag_mpcmatvec
639  hecmat%Iarray(idx_i_flag_mpcmatvec) = flag_mpcmatvec
640  end subroutine hecmw_mat_set_flag_mpcmatvec
641 
642  function hecmw_mat_get_flag_mpcmatvec( hecMAT )
643  integer(kind=kint) :: hecmw_mat_get_flag_mpcmatvec
644  type(hecmwst_matrix) :: hecmat
645  hecmw_mat_get_flag_mpcmatvec = hecmat%Iarray(idx_i_flag_mpcmatvec)
646  end function hecmw_mat_get_flag_mpcmatvec
647 
648  subroutine hecmw_mat_set_solver_opt( hecMAT, solver_opt )
649  type(hecmwst_matrix) :: hecmat
650  integer(kind=kint) :: solver_opt(:)
651  integer(kind=kint) :: nopt
652  nopt = idx_i_solver_opt_e - idx_i_solver_opt_s + 1
653  hecmat%Iarray(idx_i_solver_opt_s:idx_i_solver_opt_e) = solver_opt(1:nopt)
654  end subroutine hecmw_mat_set_solver_opt
655 
656  subroutine hecmw_mat_get_solver_opt( hecMAT, solver_opt )
657  type(hecmwst_matrix) :: hecmat
658  integer(kind=kint) :: solver_opt(:)
659  integer(kind=kint) :: nopt
660  nopt = idx_i_solver_opt_e - idx_i_solver_opt_s + 1
661  solver_opt(1:nopt) = hecmat%Iarray(idx_i_solver_opt_s:idx_i_solver_opt_e)
662  end subroutine hecmw_mat_get_solver_opt
663 
664  subroutine hecmw_mat_set_resid( hecMAT, resid )
665  type(hecmwst_matrix) :: hecmat
666  real(kind=kreal) :: resid
667 
668  hecmat%Rarray(idx_r_resid) = resid
669  end subroutine hecmw_mat_set_resid
670 
671  function hecmw_mat_get_resid( hecMAT )
673  type(hecmwst_matrix) :: hecmat
674 
675  hecmw_mat_get_resid = hecmat%Rarray(idx_r_resid)
676  end function hecmw_mat_get_resid
677 
678  subroutine hecmw_mat_set_sigma_diag( hecMAT, sigma_diag )
679  type(hecmwst_matrix) :: hecmat
680  real(kind=kreal) :: sigma_diag
681 
682  if( sigma_diag < 0.d0 ) then
683  hecmat%Rarray(idx_r_sigma_diag) = -1.d0
684  elseif( sigma_diag < 1.d0 ) then
685  hecmat%Rarray(idx_r_sigma_diag) = 1.d0
686  elseif( sigma_diag > 2.d0 ) then
687  hecmat%Rarray(idx_r_sigma_diag) = 2.d0
688  else
689  hecmat%Rarray(idx_r_sigma_diag) = sigma_diag
690  endif
691  end subroutine hecmw_mat_set_sigma_diag
692 
693  function hecmw_mat_get_sigma_diag( hecMAT )
695  type(hecmwst_matrix) :: hecmat
696 
697  hecmw_mat_get_sigma_diag = hecmat%Rarray(idx_r_sigma_diag)
698  end function hecmw_mat_get_sigma_diag
699 
700  subroutine hecmw_mat_set_sigma( hecMAT, sigma )
701  type(hecmwst_matrix) :: hecmat
702  real(kind=kreal) :: sigma
703 
704  if (sigma < 0.d0) then
705  hecmat%Rarray(idx_r_sigma) = 0.d0
706  elseif (sigma > 1.d0) then
707  hecmat%Rarray(idx_r_sigma) = 1.d0
708  else
709  hecmat%Rarray(idx_r_sigma) = sigma
710  endif
711  end subroutine hecmw_mat_set_sigma
712 
713  function hecmw_mat_get_sigma( hecMAT )
715  type(hecmwst_matrix) :: hecmat
716 
717  hecmw_mat_get_sigma = hecmat%Rarray(idx_r_sigma)
718  end function hecmw_mat_get_sigma
719 
720  subroutine hecmw_mat_set_thresh( hecMAT, thresh )
721  type(hecmwst_matrix) :: hecmat
722  real(kind=kreal) :: thresh
723 
724  hecmat%Rarray(idx_r_thresh) = thresh
725  end subroutine hecmw_mat_set_thresh
726 
727  function hecmw_mat_get_thresh( hecMAT )
729  type(hecmwst_matrix) :: hecmat
730 
731  hecmw_mat_get_thresh = hecmat%Rarray(idx_r_thresh)
732  end function hecmw_mat_get_thresh
733 
734  subroutine hecmw_mat_set_filter( hecMAT, filter )
735  type(hecmwst_matrix) :: hecmat
736  real(kind=kreal) :: filter
737 
738  hecmat%Rarray(idx_r_filter) = filter
739  end subroutine hecmw_mat_set_filter
740 
741  function hecmw_mat_get_filter( hecMAT )
743  type(hecmwst_matrix) :: hecmat
744 
745  hecmw_mat_get_filter = hecmat%Rarray(idx_r_filter)
746  end function hecmw_mat_get_filter
747 
748  subroutine hecmw_mat_set_penalty( hecMAT, penalty )
749  type(hecmwst_matrix) :: hecmat
750  real(kind=kreal) :: penalty
751 
752  hecmat%Rarray(idx_r_penalty) = penalty
753  end subroutine hecmw_mat_set_penalty
754 
755  function hecmw_mat_get_penalty( hecMAT )
757  type(hecmwst_matrix) :: hecmat
758 
759  hecmw_mat_get_penalty = hecmat%Rarray(idx_r_penalty)
760  end function hecmw_mat_get_penalty
761 
762  subroutine hecmw_mat_set_penalty_alpha( hecMAT, alpha )
763  type(hecmwst_matrix) :: hecmat
764  real(kind=kreal) :: alpha
765 
766  hecmat%Rarray(idx_r_penalty_alpha) = alpha
767  end subroutine hecmw_mat_set_penalty_alpha
768 
769  function hecmw_mat_get_penalty_alpha( hecMAT )
771  type(hecmwst_matrix) :: hecmat
772 
773  hecmw_mat_get_penalty_alpha = hecmat%Rarray(idx_r_penalty_alpha)
774  end function hecmw_mat_get_penalty_alpha
775 
776  function hecmw_mat_diag_max(hecMAT, hecMESH)
777  real(kind=kreal) :: hecmw_mat_diag_max
778  type (hecmwst_matrix) :: hecmat
779  type (hecmwst_local_mesh) :: hecmesh
780  integer(kind=kint) :: ndiag, i
781 
782  hecmw_mat_diag_max = -1.0e20
783  ndiag = hecmat%NDOF**2 * hecmat%NP
784  do i = 1, ndiag
785  if( hecmat%D(i) > hecmw_mat_diag_max ) hecmw_mat_diag_max = hecmat%D(i)
786  enddo
788  end function hecmw_mat_diag_max
789 
790  subroutine hecmw_mat_recycle_precond_setting( hecMAT )
791  type (hecmwst_matrix) :: hecmat
792  integer(kind=kint) :: nrecycle, maxrecycle
793  if (hecmat%Iarray(idx_i_flag_symbfact) >= 1) then
794  hecmat%Iarray(idx_i_flag_numfact)=1
796  elseif (hecmat%Iarray(idx_i_flag_numfact) > 1) then
798  hecmat%Iarray(idx_i_flag_numfact) = 1
799  elseif (hecmat%Iarray(idx_i_flag_numfact) == 1) then
800  nrecycle = hecmw_mat_get_nrecycle_precond(hecmat)
801  maxrecycle = hecmw_mat_get_maxrecycle_precond(hecmat)
802  if ( nrecycle < maxrecycle ) then
803  hecmat%Iarray(idx_i_flag_numfact) = 0
805  else
807  endif
808  endif
809  end subroutine hecmw_mat_recycle_precond_setting
810 
811  subroutine hecmw_mat_substitute( dest, src )
812  type (hecmwst_matrix), intent(inout) :: dest
813  type (hecmwst_matrix), intent(inout) :: src
814  dest%N = src%N
815  dest%NP = src%NP
816  dest%NPL = src%NPL
817  dest%NPU = src%NPU
818  dest%NDOF = src%NDOF
819  if (associated(src%D)) dest%D => src%D
820  if (associated(src%B)) dest%B => src%B
821  if (associated(src%X)) dest%X => src%X
822  if (associated(src%ALU)) dest%ALU => src%ALU
823  if (associated(src%AL)) dest%AL => src%AL
824  if (associated(src%AU)) dest%AU => src%AU
825  if (associated(src%indexL)) dest%indexL => src%indexL
826  if (associated(src%indexU)) dest%indexU => src%indexU
827  if (associated(src%itemL)) dest%itemL => src%itemL
828  if (associated(src%itemU)) dest%itemU => src%itemU
829  dest%Iarray(:) = src%Iarray(:)
830  dest%Rarray(:) = src%Rarray(:)
831  end subroutine hecmw_mat_substitute
832 
833 end module hecmw_matrix_misc
hecmw_matrix_misc::hecmw_mat_reset_nrecycle_precond
subroutine, public hecmw_mat_reset_nrecycle_precond(hecMAT)
Definition: hecmw_matrix_misc.f90:562
hecmw_util::hecmw_max
integer(kind=kint), parameter hecmw_max
Definition: hecmw_util_f.F90:25
hecmw_matrix_misc::hecmw_mat_get_flag_numfact
integer(kind=kint) function, public hecmw_mat_get_flag_numfact(hecMAT)
Definition: hecmw_matrix_misc.f90:572
hecmw_matrix_misc::hecmw_mat_init
subroutine, public hecmw_mat_init(hecMAT)
Definition: hecmw_matrix_misc.f90:162
hecmw_matrix_misc::hecmw_mat_get_solver_type
integer(kind=kint) function, public hecmw_mat_get_solver_type(hecMAT)
Definition: hecmw_matrix_misc.f90:601
hecmw_matrix_misc::hecmw_mat_set_iterpremax
subroutine, public hecmw_mat_set_iterpremax(hecMAT, iterpremax)
Definition: hecmw_matrix_misc.f90:342
hecmw_matrix_misc::hecmw_mat_set_usejad
subroutine, public hecmw_mat_set_usejad(hecMAT, usejad)
Definition: hecmw_matrix_misc.f90:525
hecmw_matrix_misc::hecmw_mat_get_penalty_alpha
real(kind=kreal) function, public hecmw_mat_get_penalty_alpha(hecMAT)
Definition: hecmw_matrix_misc.f90:770
hecmw_matrix_misc::hecmw_mat_set_sigma_diag
subroutine, public hecmw_mat_set_sigma_diag(hecMAT, sigma_diag)
Definition: hecmw_matrix_misc.f90:679
hecmw_matrix_misc::hecmw_mat_set_iter
subroutine, public hecmw_mat_set_iter(hecMAT, iter)
Definition: hecmw_matrix_misc.f90:272
hecmw_matrix_misc::hecmw_mat_set_maxrecycle_precond
subroutine, public hecmw_mat_set_maxrecycle_precond(hecMAT, maxrecycle_precond)
Definition: hecmw_matrix_misc.f90:549
hecmw_matrix_misc::hecmw_mat_get_iterpremax
integer(kind=kint) function, public hecmw_mat_get_iterpremax(hecMAT)
Definition: hecmw_matrix_misc.f90:352
hecmw_matrix_misc::hecmw_mat_get_usejad
integer(kind=kint) function, public hecmw_mat_get_usejad(hecMAT)
Definition: hecmw_matrix_misc.f90:519
hecmw_matrix_misc::hecmw_mat_get_flag_mpcmatvec
integer(kind=kint) function, public hecmw_mat_get_flag_mpcmatvec(hecMAT)
Definition: hecmw_matrix_misc.f90:643
hecmw_matrix_misc::hecmw_mat_get_maxrecycle_precond
integer(kind=kint) function, public hecmw_mat_get_maxrecycle_precond(hecMAT)
Definition: hecmw_matrix_misc.f90:543
hecmw_matrix_misc::hecmw_mat_clear_b
subroutine, public hecmw_mat_clear_b(hecMAT)
Definition: hecmw_matrix_misc.f90:155
hecmw_matrix_misc::hecmw_mat_set_ncolor_in
subroutine, public hecmw_mat_set_ncolor_in(hecMAT, ncolor_in)
Definition: hecmw_matrix_misc.f90:537
hecmw_matrix_misc::hecmw_mat_set_filter
subroutine, public hecmw_mat_set_filter(hecMAT, filter)
Definition: hecmw_matrix_misc.f90:735
hecmw_matrix_misc::hecmw_mat_set_penalty
subroutine, public hecmw_mat_set_penalty(hecMAT, penalty)
Definition: hecmw_matrix_misc.f90:749
hecmw_matrix_misc::hecmw_mat_get_precond
integer(kind=kint) function, public hecmw_mat_get_precond(hecMAT)
Definition: hecmw_matrix_misc.f90:321
hecmw_matrix_misc::hecmw_mat_get_solver_opt
subroutine, public hecmw_mat_get_solver_opt(hecMAT, solver_opt)
Definition: hecmw_matrix_misc.f90:657
hecmw_matrix_misc::hecmw_mat_set_nrest
subroutine, public hecmw_mat_set_nrest(hecMAT, nrest)
Definition: hecmw_matrix_misc.f90:359
hecmw_matrix_misc::hecmw_mat_get_penalty
real(kind=kreal) function, public hecmw_mat_get_penalty(hecMAT)
Definition: hecmw_matrix_misc.f90:756
hecmw_matrix_misc::hecmw_mat_set_contact_elim
subroutine, public hecmw_mat_set_contact_elim(hecMAT, contact_elim)
Definition: hecmw_matrix_misc.f90:461
hecmw_matrix_misc::hecmw_mat_set_scaling
subroutine, public hecmw_mat_set_scaling(hecMAT, scaling)
Definition: hecmw_matrix_misc.f90:387
hecmw_matrix_misc::hecmw_mat_diag_max
real(kind=kreal) function, public hecmw_mat_diag_max(hecMAT, hecMESH)
Definition: hecmw_matrix_misc.f90:777
hecmw_matrix_misc::hecmw_mat_set_thresh
subroutine, public hecmw_mat_set_thresh(hecMAT, thresh)
Definition: hecmw_matrix_misc.f90:721
hecmw_matrix_misc::hecmw_mat_get_iter
integer(kind=kint) function, public hecmw_mat_get_iter(hecMAT)
Definition: hecmw_matrix_misc.f90:279
hecmw_matrix_misc::hecmw_mat_set_method2
subroutine, public hecmw_mat_set_method2(hecMAT, method2)
Definition: hecmw_matrix_misc.f90:300
hecmw_matrix_misc::hecmw_mat_set_mpc_method
subroutine, public hecmw_mat_set_mpc_method(hecMAT, mpc_method)
Definition: hecmw_matrix_misc.f90:429
hecmw_matrix_misc::hecmw_mat_get_timelog
integer(kind=kint) function, public hecmw_mat_get_timelog(hecMAT)
Definition: hecmw_matrix_misc.f90:488
hecmw_matrix_misc::hecmw_mat_clear_flag_symbfact
subroutine, public hecmw_mat_clear_flag_symbfact(hecMAT)
Definition: hecmw_matrix_misc.f90:596
hecmw_matrix_misc::hecmw_mat_copy_val
subroutine, public hecmw_mat_copy_val(hecMATorg, hecMAT)
Definition: hecmw_matrix_misc.f90:246
hecmw_matrix_misc::hecmw_mat_get_nrest
integer(kind=kint) function, public hecmw_mat_get_nrest(hecMAT)
Definition: hecmw_matrix_misc.f90:366
hecmw_matrix_misc::hecmw_mat_set_penalty_alpha
subroutine, public hecmw_mat_set_penalty_alpha(hecMAT, alpha)
Definition: hecmw_matrix_misc.f90:763
hecmw_matrix_misc::hecmw_mat_get_dump
integer(kind=kint) function, public hecmw_mat_get_dump(hecMAT)
Definition: hecmw_matrix_misc.f90:495
hecmw_matrix_misc::hecmw_mat_get_ncolor_in
integer(kind=kint) function, public hecmw_mat_get_ncolor_in(hecMAT)
Definition: hecmw_matrix_misc.f90:531
hecmw_matrix_misc::hecmw_mat_get_resid
real(kind=kreal) function, public hecmw_mat_get_resid(hecMAT)
Definition: hecmw_matrix_misc.f90:672
hecmw_matrix_misc::hecmw_mat_get_estcond
integer(kind=kint) function, public hecmw_mat_get_estcond(hecMAT)
Definition: hecmw_matrix_misc.f90:443
hecmw_matrix_misc::hecmw_mat_get_nrecycle_precond
integer(kind=kint) function, public hecmw_mat_get_nrecycle_precond(hecMAT)
Definition: hecmw_matrix_misc.f90:556
hecmw_util
I/O and Utility.
Definition: hecmw_util_f.F90:7
hecmw_util::hecmwst_local_mesh
Definition: hecmw_util_f.F90:234
hecmw_matrix_misc::hecmw_mat_set_penalized
subroutine, public hecmw_mat_set_penalized(hecMAT, penalized)
Definition: hecmw_matrix_misc.f90:401
hecmw_matrix_misc::hecmw_mat_set_dump_exit
subroutine, public hecmw_mat_set_dump_exit(hecMAT, dump_exit)
Definition: hecmw_matrix_misc.f90:513
m_hecmw_comm_f::hecmw_allreduce_r1
subroutine hecmw_allreduce_r1(hecMESH, s, ntag)
Definition: hecmw_comm_f.F90:403
hecmw_matrix_misc::hecmw_mat_set_flag_diverged
subroutine, public hecmw_mat_set_flag_diverged(hecMAT, flag_diverged)
Definition: hecmw_matrix_misc.f90:625
hecmw_matrix_misc::hecmw_mat_get_penalized
integer(kind=kint) function, public hecmw_mat_get_penalized(hecMAT)
Definition: hecmw_matrix_misc.f90:408
hecmw_matrix_misc::hecmw_mat_clear
subroutine, public hecmw_mat_clear(hecMAT)
Definition: hecmw_matrix_misc.f90:145
hecmw_matrix_misc::hecmw_mat_get_flag_diverged
integer(kind=kint) function, public hecmw_mat_get_flag_diverged(hecMAT)
Definition: hecmw_matrix_misc.f90:631
m_hecmw_comm_f
Definition: hecmw_comm_f.F90:6
hecmw_matrix_misc::hecmw_mat_get_iterlog
integer(kind=kint) function, public hecmw_mat_get_iterlog(hecMAT)
Definition: hecmw_matrix_misc.f90:474
hecmw_matrix_misc::hecmw_mat_get_flag_converged
integer(kind=kint) function, public hecmw_mat_get_flag_converged(hecMAT)
Definition: hecmw_matrix_misc.f90:619
hecmw_matrix_misc::hecmw_mat_set_timelog
subroutine, public hecmw_mat_set_timelog(hecMAT, timelog)
Definition: hecmw_matrix_misc.f90:481
hecmw_matrix_misc::hecmw_mat_get_flag_symbfact
integer(kind=kint) function, public hecmw_mat_get_flag_symbfact(hecMAT)
Definition: hecmw_matrix_misc.f90:584
hecmw_util::kreal
integer(kind=4), parameter kreal
Definition: hecmw_util_f.F90:16
hecmw_matrix_misc::hecmw_mat_get_sigma_diag
real(kind=kreal) function, public hecmw_mat_get_sigma_diag(hecMAT)
Definition: hecmw_matrix_misc.f90:694
hecmw_matrix_misc::hecmw_mat_recycle_precond_setting
subroutine, public hecmw_mat_recycle_precond_setting(hecMAT)
Definition: hecmw_matrix_misc.f90:791
hecmw_matrix_misc::hecmw_mat_set_penalized_b
subroutine, public hecmw_mat_set_penalized_b(hecMAT, penalized_b)
Definition: hecmw_matrix_misc.f90:415
hecmw_matrix_misc::hecmw_mat_set_resid
subroutine, public hecmw_mat_set_resid(hecMAT, resid)
Definition: hecmw_matrix_misc.f90:665
hecmw_matrix_misc::hecmw_mat_set_dump
subroutine, public hecmw_mat_set_dump(hecMAT, dump_type)
Definition: hecmw_matrix_misc.f90:501
hecmw_matrix_misc::hecmw_mat_get_nbfgs
integer(kind=kint) function, public hecmw_mat_get_nbfgs(hecMAT)
Definition: hecmw_matrix_misc.f90:380
hecmw_matrix_misc::hecmw_mat_get_penalized_b
integer(kind=kint) function, public hecmw_mat_get_penalized_b(hecMAT)
Definition: hecmw_matrix_misc.f90:422
hecmw_matrix_misc::hecmw_mat_set_iterlog
subroutine, public hecmw_mat_set_iterlog(hecMAT, iterlog)
Definition: hecmw_matrix_misc.f90:467
hecmw_matrix_misc::hecmw_mat_set_precond
subroutine, public hecmw_mat_set_precond(hecMAT, precond)
Definition: hecmw_matrix_misc.f90:314
hecmw_matrix_misc::hecmw_mat_set_flag_mpcmatvec
subroutine, public hecmw_mat_set_flag_mpcmatvec(hecMAT, flag_mpcmatvec)
Definition: hecmw_matrix_misc.f90:637
hecmw_util::hecmw_nullify_matrix
subroutine hecmw_nullify_matrix(P)
Definition: hecmw_util_f.F90:813
hecmw_matrix_misc
Definition: hecmw_matrix_misc.f90:6
hecmw_matrix_misc::hecmw_mat_set_solver_opt
subroutine, public hecmw_mat_set_solver_opt(hecMAT, solver_opt)
Definition: hecmw_matrix_misc.f90:649
hecmw_matrix_misc::hecmw_mat_get_contact_elim
integer(kind=kint) function, public hecmw_mat_get_contact_elim(hecMAT)
Definition: hecmw_matrix_misc.f90:455
hecmw_matrix_misc::hecmw_mat_get_filter
real(kind=kreal) function, public hecmw_mat_get_filter(hecMAT)
Definition: hecmw_matrix_misc.f90:742
hecmw_matrix_misc::hecmw_mat_set_flag_converged
subroutine, public hecmw_mat_set_flag_converged(hecMAT, flag_converged)
Definition: hecmw_matrix_misc.f90:613
hecmw_matrix_misc::hecmw_mat_get_method
integer(kind=kint) function, public hecmw_mat_get_method(hecMAT)
Definition: hecmw_matrix_misc.f90:293
hecmw_matrix_misc::hecmw_mat_substitute
subroutine, public hecmw_mat_substitute(dest, src)
Definition: hecmw_matrix_misc.f90:812
hecmw_matrix_misc::hecmw_mat_get_thresh
real(kind=kreal) function, public hecmw_mat_get_thresh(hecMAT)
Definition: hecmw_matrix_misc.f90:728
hecmw_matrix_misc::hecmw_mat_get_dump_exit
integer(kind=kint) function, public hecmw_mat_get_dump_exit(hecMAT)
Definition: hecmw_matrix_misc.f90:507
hecmw_matrix_misc::hecmw_mat_get_method2
integer(kind=kint) function, public hecmw_mat_get_method2(hecMAT)
Definition: hecmw_matrix_misc.f90:307
hecmw_matrix_misc::hecmw_mat_get_mpc_method
integer(kind=kint) function, public hecmw_mat_get_mpc_method(hecMAT)
Definition: hecmw_matrix_misc.f90:436
hecmw_matrix_misc::hecmw_mat_set_nset
subroutine, public hecmw_mat_set_nset(hecMAT, nset)
Definition: hecmw_matrix_misc.f90:328
hecmw_matrix_misc::hecmw_mat_get_scaling
integer(kind=kint) function, public hecmw_mat_get_scaling(hecMAT)
Definition: hecmw_matrix_misc.f90:394
hecmw_matrix_misc::hecmw_mat_set_estcond
subroutine, public hecmw_mat_set_estcond(hecMAT, estcond)
Definition: hecmw_matrix_misc.f90:449
hecmw_matrix_misc::hecmw_mat_finalize
subroutine, public hecmw_mat_finalize(hecMAT)
Definition: hecmw_matrix_misc.f90:204
hecmw_matrix_misc::hecmw_mat_set_flag_symbfact
subroutine, public hecmw_mat_set_flag_symbfact(hecMAT, flag_symbfact)
Definition: hecmw_matrix_misc.f90:590
hecmw_matrix_misc::hecmw_mat_set_sigma
subroutine, public hecmw_mat_set_sigma(hecMAT, sigma)
Definition: hecmw_matrix_misc.f90:701
hecmw_matrix_misc::hecmw_mat_copy_profile
subroutine, public hecmw_mat_copy_profile(hecMATorg, hecMAT)
Definition: hecmw_matrix_misc.f90:218
hecmw_matrix_misc::hecmw_mat_incr_nrecycle_precond
subroutine, public hecmw_mat_incr_nrecycle_precond(hecMAT)
Definition: hecmw_matrix_misc.f90:567
hecmw_matrix_misc::hecmw_mat_get_nset
integer(kind=kint) function, public hecmw_mat_get_nset(hecMAT)
Definition: hecmw_matrix_misc.f90:335
hecmw_matrix_misc::hecmw_mat_set_flag_numfact
subroutine, public hecmw_mat_set_flag_numfact(hecMAT, flag_numfact)
Definition: hecmw_matrix_misc.f90:578
hecmw_matrix_misc::hecmw_mat_set_nbfgs
subroutine, public hecmw_mat_set_nbfgs(hecMAT, nbfgs)
Definition: hecmw_matrix_misc.f90:373
hecmw_matrix_misc::hecmw_mat_get_sigma
real(kind=kreal) function, public hecmw_mat_get_sigma(hecMAT)
Definition: hecmw_matrix_misc.f90:714
hecmw_matrix_misc::hecmw_mat_set_method
subroutine, public hecmw_mat_set_method(hecMAT, method)
Definition: hecmw_matrix_misc.f90:286
hecmw_matrix_misc::hecmw_mat_set_solver_type
subroutine, public hecmw_mat_set_solver_type(hecMAT, solver_type)
Definition: hecmw_matrix_misc.f90:607
hecmw_util::hecmwst_matrix
Definition: hecmw_util_f.F90:444