Télécharger TARWORK.INC

Retour à la liste

Numérotation des lignes :

  1. ************************************************************************
  2. * INCLUDE DES VARIABLES DE TRAVAIL ARPACK *
  3. ************************************************************************
  4.  
  5. SEGMENT MAUP
  6. INTEGER ido
  7. CHARACTER*1 bmat
  8. CHARACTER*2 which
  9. REAL*8 tol
  10. REAL*8 resid(ndim)
  11. INTEGER info
  12. INTEGER nev
  13. REAL*8 v(ndim,ncv)
  14. INTEGER iparam(11)
  15. INTEGER ishift
  16. INTEGER ipntr(lipntr)
  17. REAL*8 workd(3*ndim)
  18. REAL*8 workl(lworkl)
  19. LOGICAL eigvec
  20. CHARACTER*1 howmny
  21. LOGICAL select(ncv)
  22. REAL*8 dr(lnev)
  23. REAL*8 di(lnev)
  24. INTEGER ldv
  25. REAL*8 sigmar
  26. REAL*8 sigmai
  27. REAL*8 workev(3*ncv)
  28. INTEGER ITRAK(5)
  29. ENDSEGMENT
  30.  
  31. * IDO Integer. (INPUT/OUTPUT)
  32. * Reverse communication flag. IDO must be zero on the first
  33. * call to d-aupd . IDO will be set internally to
  34. * indicate the type of operation to be performed.
  35. *
  36. * BMAT Character*1. (INPUT)
  37. * BMAT specifies the type of the matrix B that defines the
  38. * semi-inner product for the operator OP.
  39. * B = 'I' -> standard eigenvalue problem A*x = lambda*x
  40. * B = 'G' -> generalized eigenvalue problem A*x = lambda*B*x
  41. *
  42. * TOL Double precision
  43. * Tolerance
  44. *
  45. * NDIM Integer. (INPUT)
  46. * Dimension of the eigenproblem.
  47. *
  48. * WHICH Character*2. (INPUT)
  49. * Specify which of the Ritz values of OP to compute.
  50. *
  51. * 'LA' - compute the NEV largest (algebraic) eigenvalues.
  52. * 'SA' - compute the NEV smallest (algebraic) eigenvalues.
  53. * 'LM' - compute the NEV largest (in magnitude) eigenvalues.
  54. * 'SM' - compute the NEV smallest (in magnitude) eigenvalues.
  55. * 'BE' - compute NEV eigenvalues, half from each end of the
  56. * spectrum. When NEV is odd, compute one more from the
  57. * high end than from the low end.
  58. * 'SM' -> want the NEV eigenvalues of smallest magnitude.
  59. * 'LR' -> want the NEV eigenvalues of largest real part.
  60. * 'SR' -> want the NEV eigenvalues of smallest real part.
  61. * 'LI' -> want the NEV eigenvalues of largest imaginary part.
  62. * 'SI' -> want the NEV eigenvalues of smallest imaginary part
  63. *
  64. * NEV (=lnev-1) Integer. (INPUT)
  65. * Number of eigenvalues of OP to be computed
  66. *
  67. * RESID Double precision array of length N. (INPUT/OUTPUT)
  68. * On INPUT:
  69. * If INFO .EQ. 0, a random initial residual vector is used.
  70. * If INFO .NE. 0, RESID contains the initial residual vector,
  71. * possibly from a previous run.
  72. * On OUTPUT:
  73. * RESID contains the final residual vector.
  74. *
  75. * NCV Integer. (INPUT)
  76. * Number of columns of the matrix V (less than or equal to N).
  77. * This will indicate how many Arnoldi vectors are generated
  78. * at each iteration.
  79. *
  80. * V REAL*8 N by NCV array. (OUTPUT)
  81. * After the factorisation building:
  82. * The NCV columns of V contain the Arnoldi basis vectors.
  83. * After the post-processing:
  84. * The NCV columns of V contain the eigenvectors
  85. *
  86. * Note : If the eigenpairs are complex, an eigenvector is
  87. * containted in two colums : the first is the real part and
  88. * the next one is the imaginary part. The conjugated one is
  89. * implicit
  90. *
  91. * LDV Integer. (INPUT)
  92. * Leading dimension of V exactly as declared in the calling
  93. * program.
  94. *
  95. * IPARAM Integer array (INPUT/OUTPUT)
  96. *
  97. * Note : Only the most relevant parameters are described below
  98. *
  99. * IPARAM(3) = MXITER
  100. * On INPUT: maximum number of Arnoldi update
  101. * iterations allowed.
  102. * On OUTPUT: actual number of Arnoldi update iterations taken.
  103. *
  104. * IPARAM(5) = NCONV: number of "converged" Ritz values.
  105. * This represents the number of Ritz values that satisfy
  106. * the convergence criterion.
  107. *
  108. * IPARAM(7) = MODE
  109. * On INPUT determines what type of eigenproblem is being
  110. * solved.
  111. * Must be 1,2,3,4,5; See under \Description of d-aupd for the
  112. * five modes available.
  113. *
  114. * IPARAM(9) = NUMOP, IPARAM(10) = NUMOPB, IPARAM(11) = NUMREO,
  115. * OUTPUT: NUMOP = total number of OP*x operations,
  116. * NUMOPB = total number of B*x operations if BMAT='G',
  117. * NUMREO = total number of steps of
  118. * re-orthogonalization.
  119. *
  120. * IPNTR Integer array (OUTPUT)
  121. * Pointer to mark the starting locations in the WORKD and WORKL
  122. * arrays for matrices/vectors used by the Lanczos iteration.
  123. *
  124. * WORKD Double precision work array of length 3*N.
  125. * (REVERSE COMMUNICATION)
  126. * Distributed array to be used in the basic Arnoldi iteration
  127. * for reverse communication.
  128. *
  129. * WORKL Double precision work array of length LWORKL.
  130. * OUTPUT/WORKSPACE)
  131. * Private (replicated) array on each PE or array allocated on
  132. * the front end.
  133. *
  134. * INFO Integer. (INPUT/OUTPUT)
  135. * Information about the reason of the exit from d--pd
  136. *
  137. * RVEC LOGICAL (INPUT)
  138. * Specifies whether a basis for the invariant subspace
  139. * corresponding to the converged Ritz value approximations for
  140. * the eigenproblem A*z = lambda*B*z is computed.
  141. *
  142. * RVEC = .FALSE. Compute Ritz values only.
  143. * RVEC = .TRUE. Compute the Ritz vectors or
  144. * Schur vectors.
  145. *
  146. * HOWMNY Character*1 (INPUT)
  147. * Specifies the form of the basis for the invariant subspace
  148. * corresponding to the converged Ritz values that is to be
  149. * computed.
  150. *
  151. * = 'A': Compute NEV Ritz vectors;
  152. * = 'P': Compute NEV Schur vectors;
  153. * = 'S': compute some of the Ritz vectors, specified
  154. * by the logical array SELECT.
  155. *
  156. * SELECT Logical array of dimension NCV. (INPUT)
  157. * No longer used (we always compute all eigenvectors)
  158. *
  159. * DR REAL*8 array of dimension NEV+1. (OUTPUT)
  160. * Contains the real part of the eigenvalues ONLY IF the shift
  161. * is real. Otherwise, eigenvalues has to be computed with the
  162. * Rayleigh's quotients
  163. *
  164. * DI REAL*8 array of dimension NEV+1. (OUTPUT)
  165. * (Used only if the problem is non-symmetric)
  166. * Contains the imaginary part of the eigenvalues ONLY IF
  167. * the shift is real. Otherwise, eigenvalues has to be computed
  168. * with the Rayleigh's quotients
  169. *
  170. * SIGMAR Double precision (INPUT)
  171. * Real part of the shift
  172. *
  173. * SIGMAI Double precision (INPUT)
  174. * Imaginary part of the shift.
  175. *
  176. * WORKEV Double precision work array of dimension 3*NCV WORKSPACE)
  177.  
  178. * ITRAK(1..5)= NOPX, NBX, NRORTH, NITREF, NRSTRT (avant 2020, dans TARTRAK.INC)
  179. * nopx : Number of OP*X iterations
  180. * nbx : Number of B*X iterations
  181. * nrorth : number of reorthogonalization steps
  182. * nitref : number of iterative refinement steps
  183. * nrstrt : number of restart steps
  184.  
  185. SEGMENT MRITRA
  186. INTEGER RIGI(NB)
  187. INTEGER SYME(NB)
  188. ENDSEGMENT
  189.  
  190.  
  191. * RIGI(NB) INTEGER array of dimension NB
  192. * Array for the pointers of the operators used by ARPACK
  193. *
  194. *
  195. * SYME(NB) INTEGER array of dimension NB
  196. * Indicates if the corresponding operator (see RIGI) symmetric
  197. * - 0 : symmetric
  198. * - 1 : indefinite
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales