Guest User

Untitled

a guest
Aug 29th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.       SUBROUTINE DIRICHLET(N,M,DIM,MATRICE_T,SECOND_M,INFO_S,
  2.      -INFO_S_SOMME,Id,COORD,Ib,NUM_PB)
  3.       IMPLICIT NONE
  4.       INTEGER  N,M,DIM,Id,I,K
  5.       CHARACTER Ib,NUM_PB
  6.       REAL D_FUNC
  7.       INTEGER  INFO_S_SOMME((N+1)*(M+1)),INFO_S((N+1)*(M+1))
  8.       REAL MATRICE_T(DIM),SECOND_M((N+1)*(M+1)),COORD(2*(N+1)*(M+1))
  9.  
  10.       !Fonction qui permet d'appliquer les conditions aux limites de type dirichlet
  11.       !sur le systeme
  12.      
  13.       !Insert un 1 sur la diagonale
  14.       MATRICE_T(INFO_S_SOMME(Id))=1
  15.      
  16.       !Insert les zeros sur la ligne et modifie la première partie du second membre
  17.       DO 1 I=1,INFO_S(Id)-1
  18.          SECOND_M(Id-I)= SECOND_M(Id-I)-MATRICE_T(INFO_S_SOMME(Id)-I)
  19.      -   *D_FUNC(COORD(2*Id-1),COORD(2*Id),Ib,NUM_PB)
  20.          MATRICE_T(INFO_S_SOMME(Id)-I)=0
  21.  1    CONTINUE
  22.  
  23.       !Inserer les zeros sur la colonne et modifie la seconde partie du second membre
  24.       SECOND_M(Id)=D_FUNC(COORD(2*Id-1),COORD(2*Id),Ib,NUM_PB)
  25.       K=1
  26.       DO 2 I=Id+1,(M+1)*(N+1)
  27.          IF(I-INFO_S(I).LT.Id) THEN
  28.             SECOND_M(I)=SECOND_M(I)- MATRICE_T(INFO_S_SOMME(I)-K)*
  29.      -      D_FUNC(COORD(2*Id-1),COORD(2*Id),Ib,NUM_PB)
  30.             MATRICE_T(INFO_S_SOMME(I)-K)=0
  31.          ENDIF
  32.          K=K+1
  33.  2    CONTINUE
  34.      
  35.       END
Add Comment
Please, Sign In to add comment