Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SUBROUTINE DIRICHLET(N,M,DIM,MATRICE_T,SECOND_M,INFO_S,
- -INFO_S_SOMME,Id,COORD,Ib,NUM_PB)
- IMPLICIT NONE
- INTEGER N,M,DIM,Id,I,K
- CHARACTER Ib,NUM_PB
- REAL D_FUNC
- INTEGER INFO_S_SOMME((N+1)*(M+1)),INFO_S((N+1)*(M+1))
- REAL MATRICE_T(DIM),SECOND_M((N+1)*(M+1)),COORD(2*(N+1)*(M+1))
- !Fonction qui permet d'appliquer les conditions aux limites de type dirichlet
- !sur le systeme
- !Insert un 1 sur la diagonale
- MATRICE_T(INFO_S_SOMME(Id))=1
- !Insert les zeros sur la ligne et modifie la première partie du second membre
- DO 1 I=1,INFO_S(Id)-1
- SECOND_M(Id-I)= SECOND_M(Id-I)-MATRICE_T(INFO_S_SOMME(Id)-I)
- - *D_FUNC(COORD(2*Id-1),COORD(2*Id),Ib,NUM_PB)
- MATRICE_T(INFO_S_SOMME(Id)-I)=0
- 1 CONTINUE
- !Inserer les zeros sur la colonne et modifie la seconde partie du second membre
- SECOND_M(Id)=D_FUNC(COORD(2*Id-1),COORD(2*Id),Ib,NUM_PB)
- K=1
- DO 2 I=Id+1,(M+1)*(N+1)
- IF(I-INFO_S(I).LT.Id) THEN
- SECOND_M(I)=SECOND_M(I)- MATRICE_T(INFO_S_SOMME(I)-K)*
- - D_FUNC(COORD(2*Id-1),COORD(2*Id),Ib,NUM_PB)
- MATRICE_T(INFO_S_SOMME(I)-K)=0
- ENDIF
- K=K+1
- 2 CONTINUE
- END
Add Comment
Please, Sign In to add comment