devint
C DEVINT SOURCE BP208322 20/06/16 21:15:04 10627 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Operateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Interpolation du chargement fourni en LISTREEL. * * Remplissage du segment de travail KTRAV. * * * * Parametres: * * * * e ICHATE pointeur sur un LISTREEL, abscisse * * e ICHAFO pointeur sur un LISTREEL, ordonnee * * e KTNUM segment contenant les parametres numeriques * * s KTRAV segment de travail * * e REPRIS logique indiquant si le calcul est en reprise * * * * Auteur, date de creation: * * * * Lionel VIVAN, le 17 avril 1990 * * * *--------------------------------------------------------------------* * -INC PPARAM -INC CCOPTIO -INC SMLREEL * SEGMENT,MTNUM REAL*8 XDT(NPC1),XTEMPS(NPC1) ENDSEGMENT SEGMENT,MTRAV REAL*8 FTCHG(NPC2) ENDSEGMENT LOGICAL REPRIS * RECUP DES ARGUMENTS * MTNUM = KTNUM NPC1 = XDT(/1) PASTEM = XDT(1) PASTS2 = PASTEM * 0.5D0 MLREE1 = ICHATE SEGACT MLREE1 MLREE2 = ICHAFO SEGACT MLREE2 * CREATION DE MTRAV * NPC2 = 2 * NPC1 SEGINI MTRAV KTRAV = MTRAV * * INTERPOLATION DU CHARGEMENT * * initialisation des indices debut et fin de recherche N1 = 1 N2 = 2 c c SI REPRISE, ON CHERCHE LES FORCES A TREPRISE-DT/2 c IF ( REPRIS ) THEN c TEMP = XTEMPS(1) c TES2 = TEMP - PASTS2 c write(*,*) 'devint: reprise => cherche F(t=',TES2,') --> FTCHG(1)' c CALL INTLIN(TES2,ICHATE,ICHAFO,NF,N1,N2, FTEM,IRET) c IF (IRET.EQ.0) THEN c * temps en dehors de la liste c CALL ERREUR(208) c RETURN c ENDIF c c SI 1er APPEL A DYNE, ON SUPPOSE LES FORCES a t<0 NULLES c ELSE c FTEM = 0.D0 c ENDIF c IT2 = 1 c FTCHG(IT2) = FTEM c c FTCHG(IT2) = 1./(FTEM-FTEM) c c write(*,*) 'devint: bidouille pour montrer l inutilite',FTCHG(IT2) c bp,2020 : ci-dessus me semble inutile car FTCHG(1) -> FEXA(*,1,2) c qui n'est pas utilise meme en reprise. c En effet, en cas de reprise, devini appelle dyne23 qui remplit c FTOTA a partir de la table de reprise. c En cas d'intialisation, devini utilise FTCHG(1)=0 ! IT2 = 1 FTCHG(IT2) = 0.D0 c BOUCLE SUR PAS DE TEMPS ET PAS DE TEMPS+DT/2 NPC3 = NPC1 - 1 DO 10 IT = 1,NPC3 c interpolation a t_IT TEMP = XTEMPS(IT) IF (IRET.EQ.0) THEN * temps en dehors de la liste RETURN ENDIF IT2 = IT2 + 1 FTCHG(IT2) = FTEM c interpolation a t_IT + dt/2 TES2 = TEMP + PASTS2 IF (IRET.EQ.0) THEN * temps en dehors de la liste RETURN ENDIF IT2 = IT2 + 1 FTCHG(IT2) = FTEM 10 CONTINUE c DERNIER PAS DE TEMPS TEMP = XTEMPS(NPC1) IRET=-1 IF (IRET.EQ.0) THEN * temps en dehors de la liste RETURN ENDIF IT2 = IT2 + 1 FTCHG(IT2) = FTEM * SEGDES,MLREE1,MLREE2 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales