dyndif
C DYNDIF SOURCE BP208322 18/12/20 21:15:41 10048 C DYNDEV SOURCE LAVARENN 96/10/30 21:23:28 2349 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Operateur DYNE : algorithme differences centrees (IALGO=2) * * et ACCELERATION_MOYENNE (IALGO=3) * * et FOX_GOODWIN (IALGO=4) * * ________________________________________________ * * * * Appel aux sous-programmes * * * * Remarque : les segments de travail sont laisses actifs durant * * l'execution de l'algorithme. * * * *--------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO * LOGICAL REPRIS,RIGIDE,LMODYN * ICHAIN = 0 c GAMMA=0.5 et BETA=...(selon l'algo) IF(IALGO.EQ.2) THEN BETA=0.D0 ELSEIF(IALGO.EQ.3) THEN BETA=0.25D0 ELSEIF(IALGO.EQ.4) THEN BETA=1.D0/12.D0 ELSE c on ne devrait jamais arriver ici car deja teste en amont RETURN ENDIF * * Lecture et coherence des operandes: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVLIR' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDIF : avant lappel au sous-programme DEVLIR' ENDIF & ITSORT,ITREDU,KPREF,KCPR,ITCARA,LMODYN,ITDYN) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDIF : apres lappel au sous-programme DEVLIR' ENDIF * * Allocation de l'espace de travail: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVALO' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVALO' ENDIF & ITSORT,ITREDU,KPREF,KTQ,KTKAM,KTPHI,KTLIAA,KTLIAB, & KTFEX,KTPAS,KTRES,KTNUM,IPMAIL,REPRIS,ICHAIN, & KOCLFA,KOCLB1,ITCARA,LMODYN) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVALO' ENDIF * * Remplissage des tableaux des liaisons: * IF (ITLIA.NE.0) THEN IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVLIA' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVLIA' ENDIF IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVLIA' ENDIF ENDIF * * Transposition du contenu d'objets CASTEM2000 dans des tableaux: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VTRA' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VTRA' ENDIF & KTLIAB,RIGIDE,ITCARA,LMODYN,IALGO,BETA) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VTRA' ENDIF * * Remplissage du tableau des chargements exterieurs: * IF (ITCHAR.NE.0) THEN IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VFX0' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VFX0' ENDIF IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VFX0' ENDIF IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVSPM' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVPSM' ENDIF * * DEVPSM n'a pas ete modifie pour differences centrees, mais de toutes * facons les pseudomodes ne sont pas correctes en non lineaire IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVPSM' ENDIF ENDIF * * Lecture des chargements en Base B, pour les corps rigides * IF (RIGIDE) THEN IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VRIG' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV :avant lappel au sous-programme & D2VRIG' ENDIF IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV :apres lappel au sous-programme & D2VRIG' ENDIF ENDIF * * Initialisation de l'algorithme, ou reprise de calcul: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VINI' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VINI' ENDIF & KTPHI,KCPR,KOCLFA,KOCLB1,REPRIS,RIGIDE,lmodyn) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VINI' ENDIF * * Mise en oeuvre de l'algorithme: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme D2VALG' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VALG' ENDIF IF(IALGO.EQ.2) THEN & KTNUM,KPREF,NINS,KOCLFA,KOCLB1,REPRIS,RIGIDE) ELSEIF(IALGO.GE.3) THEN & KTNUM,KPREF,NINS,KOCLFA,KOCLB1,REPRIS,RIGIDE,BETA) ENDIF IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme D2VALG' ENDIF * * Creation de la table resultat et nettoyage memoire: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVSOR' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVSOR' ENDIF & KTRES,KTNUM,NINS,IPMAIL,REPRIS,ICHAIN, & KOCLFA,KOCLB1,LMODYN,ITDYN) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=INT(XKT) WRITE(IOIMP,*)'DYNDEV : apres lappel au sous-programme DEVSOR' ENDIF IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : fin presumee normale de ce calcul' ENDIF * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales