sugege
C SUGEGE SOURCE CHAT 06/03/29 21:35:08 5360 C C ********************************************************************** C FICHIER : HEXOS.F C OBJET : RACCORD DE 2 MAILLAGES GRILLES. C FONCT. : C OBJET HEXOS : RACCORD DE 2 MAILLAGES SURFACIQUES (GRILLES) C C AUTEUR : O. STAB C DATE : 03.97 C MODIFICATIONS : C AUTEUR, DATE, OBJET : C C C ********************************************************************** C C ********************************************************************** C OBJET SUGEGE : CALCULE LA RAISON ET LE NOMBRE DE TERMES D'UNE SUITE C OBJET GEOMETRIQUE C C EN ENTREE : C C DLONG : LONGUEUR TOTALE C DEN1 : TAILLE SOUHAITEE POUR LE DEBUT (OPTIONNEL 0.0) C DEN2 : " " " " " POUR LA FIN (OPTIONNEL 0.0) C NB : NOMBRE DE COUCHES SOUHAITEES (OPTIONNEL 0) C C EN SORTIE : C C NBCOUC : NOMBRE DE COUCHES SUPPLEMENTAIRES C RAISON : RAISON DE LA SUITE GEOMETRIQUE CS C REMARQUE : LES PARAMETRES NON FOURNIS DOIVENT ETRE MIS A 0.0 ou 0 C ********************************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) INTEGER NB,iarr C REAL*8 X,Y,XYZEPS d1=den1/DLONG d2= den2/dlong DEN1=D1*DLONG DEN2=D2*DLONG NB=NBELEM RETURN C C COMMON /CGEPSI/ XYZHUG,XYZMIN,XYZEPS C REAL*8 XYZHUG,XYZMIN,XYZEPS C C XYZEPS = 1.19209290E-07 C C XYZEPS=1.d-10 C iarr = 0 C IF( NB.EQ. 0 )THEN C =============== C ==== CALCUL DE NB ==== C =============== C IF(( DEN1.LE.XYZEPS ).AND.( DEN1.GE. -XYZEPS))THEN C RAISON = 1.0 C IF(( DEN2.LE.XYZEPS ).AND.( DEN2.GE. -XYZEPS))THEN C NB = 1 C ELSE C NB = ( DLONG / DEN2 ) C ENDIF C ELSE C ---- DEN1 != 0 ---- C IF(( DEN2.LE.XYZEPS ).AND.( DEN2.GE. -XYZEPS))THEN C RAISON = 1.0 C NB = ( DLONG / DEN1 ) C ELSE C ---- DEN1 != 0 ET DEN2 != 0 ---- C X = LOG(DLONG + DEN2)-LOG(DLONG + DEN1) C IF((DEN1.GE.DLONG-XYZEPS).OR.(DEN2.GE.DLONG-XYZEPS))THEN C X = 0.0 C ELSE C X = LOG(DLONG - DEN1)-LOG(DLONG - DEN2) C ENDIF C IF( (X.LE.XYZEPS).AND.(X.GE.-XYZEPS) )THEN C RAISON = 1.0 C NB = (2 * DLONG / (DEN1+DEN2)) C ELSE C RAISON = ( DLONG - DEN1 ) / ( DLONG - DEN2 ) C Y = LOG(DEN2) - LOG(DEN1) C X = (Y / X) + 1.0 C NB = NINT(X) C X = (DEN2/DEN1)**(1.0 / (NB-1)) C ENDIF C ENDIF C ENDIF C ELSE C =============== C ==== NB EST DONNE ==== C =============== C IF(( DEN1.LE.XYZEPS ).AND.( DEN1.GE. -XYZEPS))THEN C IF(( DEN2.LE.XYZEPS ).AND.( DEN2.GE. -XYZEPS))THEN C RAISON = 1.0 C ELSE C iarr = -3 C RAISON = 0 C ENDIF C ELSE C ---- DEN1 != 0 ---- C IF(( DEN2.LE.XYZEPS ).AND.( DEN2.GE. -XYZEPS))THEN C iarr = -3 C RAISON = 0 C ELSE C ---- DEN1 != 0 ET DEN2 != 0 ---- C IF((DEN1.GE.DLONG-XYZEPS).OR.(DEN2.GE.DLONG-XYZEPS))THEN C X = 0.0 C ELSE C X = LOG(DLONG - DEN1)-LOG(DLONG - DEN2) C ENDIF C IF( (X.LE.XYZEPS).AND.(X.GE.-XYZEPS) )THEN C RAISON = 1.0 C ELSE C RAISON = ( DLONG - DEN1 ) / ( DLONG - DEN2 ) C Y = LOG(DEN2) - LOG(DEN1) C X = (Y / X) + 1.0 C CC RAISON = (DEN2/DEN1)**(1.0 / (NB-1)) C ENDIF C ENDIF C ENDIF C ENDIF C 9999 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales