The TELEMAC-MASCARET system  trunk
invert.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE invert
3 ! *****************
4 !
5  &( rn , n , np )
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P2 25/06/2012
9 !***********************************************************************
10 !
11 !brief CALCULATION OF INVERSE MATRIX NXN
12 !+
13 !+ TAKEN FROM NUMERICAL RECEIPES IN FORTRAN 77
14 !+ USED IN THE FREE-MESH METHOD (DIFFRACTION)
15 !
16 !history E. KRIEZI (LNH)
17 !+ 04/12/2006
18 !+ V5P5
19 !+
20 !
21 !
22 !history G.MATTAROLO (EDF - LNHE)
23 !+ 23/06/2012
24 !+ V6P2
25 !+ Modification for V6P2
26 !
27 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28 !| N |-->| MATRIX DIMENSION
29 !| NP |-->| MATRIX PHYSICAL DIMENSION
30 !| RN |<->| MATRIX TO INVERT
31 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 !
33  USE interface_tomawac, ex_invert => invert
34  IMPLICIT NONE
35 !
36 !.....VARIABLES IN ARGUMENT
37 ! """"""""""""""""""""
38  INTEGER, INTENT(IN) :: N, NP
39  DOUBLE PRECISION, INTENT(INOUT) :: RN(np,np)
40 !
41 !.....LOCAL VARIABLES
42 ! """""""""""""""
43  INTEGER INDX(np),I,J
44  DOUBLE PRECISION Y(np,np), A(np,np)
45 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46 !
47  a=rn
48  DO i=1,n
49  DO j=1,n
50  y(i,j)=0.
51  ENDDO
52  y(i,i)=1.
53  ENDDO
54  CALL ludcmp(a,n,np,indx)
55  DO j=1,n
56  CALL lubksb(a,n,np,indx,y(1,j))
57  ENDDO
58  rn=y
59 !
60  RETURN
61  END
62 
subroutine ludcmp(A, N, NP, INDX)
Definition: ludcmp.f:7
subroutine invert(RN, N, NP)
Definition: invert.f:7
subroutine lubksb(A, N, NP, INDX, B)
Definition: lubksb.f:7