Download equat3.eso

Back to the list

   1 : C EQUAT3    SOURCE    CHAT      05/01/12    23:44:32     5004           
   2 :       SUBROUTINE EQUAT3(A,B,C,SIG1,SIG2,SIG3)
   3 : C=======================================================================
   4 : C
   5 : C         RESOLUTION D'UNE EQUATION DU 3EME DEGRE DE LA FORME:
   6 : C                   X*X*X + A*X*X + B*X + C = 0
   7 : C
   8 : C=======================================================================
   9 : C
  10 : C  ENTREES: A , B , C.
  11 : C  SORTIES: SIG1 , SIG2 , SIG3.
  12 : C
  13 : C=======================================================================
  14 : C
  15 : C  CREATION : F.CORMERY       
  16 : C             E.N.S.M.A - LMPM
  17 : C             DEC 1992
  18 : C
  19 : C=======================================================================
  20 :       IMPLICIT INTEGER(I-N)
  21 :       IMPLICIT REAL*8 (A-H,O-Z)
  22 :       DATA DEUX/2.D0/,TROIS/3.D0/,QUATRE/4.D0/,DM6/1.D-8/,PETIT/1.D-12/
  23 :       DATA A27/27.D0/,UN/1.D0/,XUN/-1.D0/
  24 : C-----------------------------------------------------------------------
  25 :       COS(X)=DCOS(X)
  26 :       ACOS(X)=DACOS(X)
  27 :       PI=DATAN(1.D0)*4.D0
  28 : C-----------------------------------------------------------------------
  29 :       P=B-A*A/TROIS
  30 :       Q=(DEUX*A*A*A/A27)-((A*B)/TROIS)+C
  31 :       XIMAGI=(QUATRE*P*P*P)+A27*Q*Q
  32 :       AXIMAG=ABS(XIMAGI)
  33 : C--------------------------
  34 :       IF(XIMAGI.GT.0.D0.AND.AXIMAG.GT.DM6) GO TO 900
  35 : C--------------------------
  36 :       R=-QUATRE*P/TROIS
  37 :       YLAMDA=SQRT(R)
  38 :       IF(ABS(P).LE.PETIT) GO TO 100
  39 :       ANG=PI/DEUX
  40 :       AA=(Q*TROIS)/(YLAMDA*P)
  41 : C--------------------------
  42 : *      IF(ABS(AA-UN).LE.1.E-14) GO TO 22
  43 :       IF(ABS(AA-UN).LE.1.E-14.OR.AA.GE.UN) THEN
  44 : *      IF(AA.GE.UN)THEN
  45 : *22    S1=YLAMDA
  46 :       S1=YLAMDA
  47 :       S2=-YLAMDA/2
  48 :       S3=S2
  49 :       GOTO 101
  50 :       ENDIF
  51 : C--------------------------
  52 : *      IF(ABS(UN+AA).LE.1.E-14)GOTO 23
  53 :       IF(ABS(UN+AA).LE.1.E-14.OR.AA.LE.XUN)THEN
  54 : *      IF(AA.LE.XUN)THEN
  55 : *23    S1=YLAMDA/2
  56 :       S1=YLAMDA/2
  57 :       S2=-YLAMDA
  58 :       S3=S1
  59 :       GOTO 101
  60 :       ENDIF
  61 : C--------------------------
  62 :       AAA=ABS(AA)
  63 :       IF(AAA.GT.DM6)ANG=ACOS(AA)
  64 :       PHI=ANG/TROIS
  65 :       GO TO 200
  66 : 100   CONTINUE
  67 :       PHI=PI/DEUX
  68 : C-------------------------
  69 : 200   S1=YLAMDA*COS(PHI)
  70 :       S2=YLAMDA*COS(PHI+(PI*DEUX)/TROIS)
  71 :       S3=YLAMDA*COS(PHI+(PI*QUATRE)/TROIS)
  72 : C-----------------------------------------------------------------------
  73 : 101   CONTINUE
  74 :       SIG1=S1-A/TROIS
  75 :       SIG2=S2-A/TROIS
  76 :       SIG3=S3-A/TROIS
  77 :       GO TO 999
  78 : C-----------------------------------------------------------------------
  79 : C                             ERREURS
  80 : C-----------------------------------------------------------------------
  81 : 900   WRITE(10,2000) 
  82 : 2000  FORMAT(/,' ***** ERREUR DANS EQUA3D :  2 RACINES',
  83 :      *    /,7X,'IMAGINAIRES POUR LE CALCUL DES CONTRAINTES PRINCIPALES')
  84 :       GO TO 999
  85 : C
  86 : C------ FIN
  87 : C
  88 : 999   RETURN
  89 :       END
  90 :  
  91 :  

© Cast3M 2003 - All rights reserved.
Disclaimer