C DYNDIF SOURCE FANDEUR 11/04/12 21:15:58 6938 C DYNDEV SOURCE LAVARENN 96/10/30 21:23:28 2349 SUBROUTINE DYNDIF IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Operateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Appel aux sous-programmes de l'option 'DE_VOGELAERE' * * * * Remarque : les segments de travail sont laisses actifs durant * * l'execution de l'algorithme. * * * * Auteur, date de creation: * * * * Denis ROBERT-MOUGIN, LE 25 mai 1989. * * * *--------------------------------------------------------------------* -INC CCOPTIO * LOGICAL REPRIS,RIGIDE,LMODYN * ICHAIN = 0 * * Lecture et coh�rence des op�randes: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVLIR' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDIF : avant lappel au sous-programme DEVLIR' ENDIF CALL DEVLIR(ITBAS,ITKM,ITA,ITLIA,ITCHAR,ITINIT,NP,PDT,NINS, & ITSORT,ITREDU,KPREF,KCPR,ITCARA,LMODYN,ITDYN) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDIF : apr�s 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVALO' ENDIF CALL DEVALO(ITBAS,ITKM,ITA,ITLIA,ITCHAR,ITINIT,NP,PDT,NINS, & 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVLIA' ENDIF CALL DEVLIA(ITLIA,KCPR,PDT,KTLIAA,KTLIAB,ITCARA,LMODYN) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s 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 DEVTRA' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVTRA' ENDIF CALL DEVTRA(ITBAS,ITKM,ITA,KTKAM,IPMAIL,KTRES,KPREF,KTPHI,KTLIAB, & RIGIDE,ITCARA,LMODYN) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s lappel au sous-programme DEVTRA' ENDIF * * Remplissage du tableau des chargements ext�rieurs: * 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VFX0' ENDIF CALL D2VFX0(ITCHAR,KTNUM,KPREF,KTFEX,REPRIS,RIGIDE) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s 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)=XKT CALL ERREUR(-259) 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 CALL DEVPSM(ITCHAR,ITBAS,KTLIAB,KTNUM,KTPHI,KTFEX,REPRIS) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV :avant lappel au sous-programme & D2VRIG' ENDIF CALL D2VRIG(ITCHAR,KTNUM,KTPHI,KTFEX,KTLIAB,REPRIS) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV :apr�s 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VINI' ENDIF CALL D2VINI(ITINIT,KTKAM,KTQ,KTFEX,KTPAS,KTNUM,KTLIAA,KTLIAB, & KTPHI,KCPR,KOCLFA,KOCLB1,REPRIS,RIGIDE,lmodyn) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme D2VALG' ENDIF CALL D2VALG(KTQ,KTKAM,KTPHI,KTLIAA,KTLIAB,KTFEX,KTPAS,KTRES, & KTNUM,KPREF,NINS,KOCLFA,KOCLB1,REPRIS,RIGIDE) IF (IERR.NE.0) RETURN IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s lappel au sous-programme D2VALG' ENDIF * * Cr�ation de la table r�sultat et nettoyage m�moire: * IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : appel au sous-programme DEVSOR' ENDIF IF (IIMPI.EQ.444) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : avant lappel au sous-programme DEVSOR' ENDIF CALL DEVSOR(KPREF,KTQ,KTKAM,KTPHI,KTLIAA,KTLIAB,KTFEX,KTPAS, & 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)=XKT CALL ERREUR(-259) WRITE(IOIMP,*)'DYNDEV : apr�s lappel au sous-programme DEVSOR' ENDIF IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNDEV : fin pr�sum�e normale de ce calcul' ENDIF * RETURN END