C CALMOD SOURCE CHAT 05/01/12 21:47:12 5004 SUBROUTINE CALMOD(TEMPS,JDIM,REL,MAILLE,MODULE,TR) * * identification d'une fonction de relaxation avec une serie de Dirichlet * * entree * JDIM : dimension utlisees des tableaux TEMPS et REL * TEMPS : table des temps de la fonction de relaxation * REL : table contenant les valeurs de la fonction de relaxation * MAILLE : nombre de termes de la serie de Dirichlet * * sortie * MODULE : table contenant les modules de la serie * TR : temps de relaxation de la serie * * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC CCOPTIO * REAL*8 TEMPS(0:1000),REL(0:1000) REAL*8 MODULE(0:8),POND(0:10000) REAL*8 A(0:9,0:9),B(0:9) REAL*8 TR(0:8) * * calcul des coefficients de ponderation * NDIM=10 TMP=2.*(TEMPS(JDIM)-TEMPS(0))/FLOAT(JDIM) DO 10 I=1,JDIM-1 POND(I)=(TEMPS(I+1)-TEMPS(I-1))/TMP 10 CONTINUE POND(0)=2.*(TEMPS(1)-TEMPS(0))/TMP POND(JDIM)=2.*(TEMPS(JDIM)-TEMPS(JDIM-1))/TMP * * calcul des temps de relaxation * TR(0)=0. DO 20 I=1,MAILLE TR(I)=1./(10**(FLOAT(I)-1.)) 20 CONTINUE * * initialisation a zero de A et de B * DO 30 I=0,9 DO 31 J=0,9 A(I,J)=.0 31 CONTINUE B(I)=.0 30 CONTINUE * * calcul des modules de Maxwell * DO 40 I=0,MAILLE DO 41 J=0,MAILLE DO 42 K=0,JDIM A(I,J)=A(I,J)+POND(K)*(DEXP((TEMPS(0)-TEMPS(K))*TR(I))) 1 *(DEXP((TEMPS(0)-TEMPS(K))*TR(J))) 42 CONTINUE 41 CONTINUE DO 43 K=0,JDIM B(I)=B(I)+POND(K)*(DEXP((TEMPS(0)-TEMPS(K))*TR(I))) 2 *REL(K) 43 CONTINUE 40 CONTINUE * CALL SODIRI(A,MODULE,B,MAILLE+1,NDIM,KERRE) IF(KERRE.EQ.49) CALL ERREUR(49) * END