Télécharger surfp8.eso

Retour à la liste

Numérotation des lignes :

surfp8
  1. C SURFP8 SOURCE PV 07/11/23 21:19:42 5978
  2. SUBROUTINE SURFP8 (ETAPE,USUR,VSUR,DSUR,LONG,U1SUR,U2SUR,V1SUR,
  3. & V2SUR,NOMB1,NOMB2,NOMB3,NOMB4)
  4. ************************************************************************
  5. *
  6. * S U R F P 8
  7. * -----------
  8. *
  9. * FONCTION:
  10. * ---------
  11. *
  12. * - ETAPE 1 : MODIFICATION DES COORDONNEES PARAMETRIQUES EN FONCTION
  13. * DU NOMBRE D'ELEMENTS SUR LES LIGNES DU CONTOUR
  14. * - ETAPE 2 : OPERATION INVERSE
  15. *
  16. *
  17. * MODULES UTILISES:
  18. * -----------------
  19. *
  20. IMPLICIT INTEGER(I-N)
  21. IMPLICIT real*8 (a-h,o-z)
  22.  
  23. -INC PPARAM
  24. -INC CCOPTIO
  25. *
  26. *
  27. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  28. * -----------
  29. *
  30. * ETAPE (E) = .TRUE. POUR L'ETAPE 1
  31. * = .FALSE. POUR L'ETAPE 2
  32. * USUR() (E) 1ERE COORDONNEE PARAMETRIQUE DE POINTS DE LA SURFACE
  33. * VSUR() (E) 2EME COORDONNEE PARAMETRIQUE DE POINTS DE LA SURFACE
  34. * DSUR() (E) DENSITE DES POINTS DE LA SURFACE,CALCULEE DANS SURFP5
  35. * (SEULEMENT POUR L'ETAPE 2)
  36. * LONG (E) LONGUEUR DES TABLEAUX USUR ET VSUR
  37. * U1SUR (E) BORNE INFERIEURE DU PARAMETRE 'U'
  38. * (VALEUR SAUVEE POUR L'ETAPE 2)
  39. * U2SUR (E) BORNE SUPERIEURE DU PARAMETRE 'U'
  40. * (VALEUR SAUVEE POUR L'ETAPE 2)
  41. * V1SUR (E) BORNE INFERIEURE DU PARAMETRE 'V'
  42. * (VALEUR SAUVEE POUR L'ETAPE 2)
  43. * V2SUR (E) BORNE SUPERIEURE DU PARAMATRE 'V'
  44. * (VALEUR SAUVEE POUR L'ETAPE 2)
  45. * NOMB.. (E) NOMBRE D'ELEMENTS SUR LA LIGNE
  46. * (VALEUR SAUVEE POUR L'ETAPE 2)
  47. * USUR() (S) NOUVELLE 1ERE COORDONNEE PARAMETRIQUE
  48. * VSUR() (S) NOUVELLE 2EME COORDONNEE PARAMETRIQUE
  49. *
  50. INTEGER LONG,NOMB1,NOMB2,NOMB3,NOMB4
  51. LOGICAL ETAPE
  52. REAL*8 USUR(*),VSUR(*),DSUR(*),U1SUR,U2SUR,V1SUR,V2SUR
  53. *
  54. * CONSTANTES:
  55. * -----------
  56. *
  57. INTEGER KMAX
  58. REAL*8 DEMI,CENT
  59. PARAMETER (DEMI=0.5D0,CENT=100.D0,KMAX=30)
  60. *
  61. * VARIABLES:
  62. * ----------
  63. *
  64. INTEGER N1,N2,N3,N4
  65. *>>>>> P.M. 26/09/90
  66. *+* REAL U1,U2,V1,V2,U12,U21,V12,V21,UV21,U0,V0,A,UMAX,UMIN,EPSU,
  67. REAL*8 U1,U2,V1,V2,U12,U21,V12,V21,UV21,U0,V0,A,UMAX,UMIN,EPSU,
  68. *<<<<<
  69. & USURB,USURC,USURD,VSURB,VSURC,VSURD,VMAX,VMIN,EPSV
  70. LOGICAL CONVRG
  71. SAVE U0,V0,A,N1,N2,N3,N4,U1,U2,V1,V2,U12,V12
  72. *
  73. * REMARQUES
  74. * ---------
  75. *
  76. * PREMIERE DEFORMATION : CHANGEMENT D'ECHELLE SUIVANT U ET V ,
  77. * ALLONGEMENT DE LA SURFACE, (FACTEUR CONSTANT).
  78. *
  79. * DEUXIEME DEFORMATION : LES COMPARAISONS ENTRE COTES OPPOSES
  80. * VONT ENTRAINER DES CHANGEMENTS D'ECHELLE, (FACTEUR LINEAIRE).
  81. *
  82. * AUTEUR, DATE DE CREATION:
  83. * -------------------------
  84. *
  85. * LIONEL VIVAN 3 DECEMBRE 1987
  86. *
  87. * LANGAGE:
  88. * --------
  89. *
  90. * FORTRAN77
  91. *
  92. ************************************************************************
  93. *
  94. IF (ETAPE) THEN
  95. *
  96. * ETAPE A : PREMIERE DEFORMATION
  97. *
  98. U1=U1SUR
  99. U2=U2SUR
  100. V1=V1SUR
  101. V2=V2SUR
  102. N1=NOMB1
  103. N2=NOMB2
  104. N3=NOMB3
  105. N4=NOMB4
  106. U21=(U2-U1)*DEMI
  107. V21=(V2-V1)*DEMI
  108. UV21=ABS(U21/V21)
  109. *
  110. IF ((N1+N3).NE.0 .AND. (N2+N4).NE.0) THEN
  111. A=SQRT(UV21*(N2+N4)/(N1+N3))
  112. DO 110 I=1,LONG
  113. USUR(I)=USUR(I)/A
  114. VSUR(I)=VSUR(I)*A
  115. 110 CONTINUE
  116. * END DO
  117. U1=U1/A
  118. U2=U2/A
  119. V1=V1*A
  120. V2=V2*A
  121. *
  122. * ETAPE B : DEUXIEME DEFORMATION
  123. *
  124. U12=(U1+U2)*DEMI
  125. V12=(V1+V2)*DEMI
  126. IF (N2.NE.N4 .AND. N1.NE.N3 .AND. N1.NE.0 .AND.
  127. & N2.NE.0 .AND. N3.NE.0 .AND. N4.NE.0) THEN
  128. U0=(N4*U2-N2*U1)/(N4-N2)
  129. V0=(N3*V1-N1*V2)/(N3-N1)
  130. DO 120 I=1,LONG
  131. USURB=USUR(I)
  132. VSURB=VSUR(I)
  133. USUR(I)=U12+(VSURB-V0)*(USURB-U12)/(V12-V0)
  134. VSUR(I)=V12+(USURB-U0)*(VSURB-V12)/(U12-U0)
  135. 120 CONTINUE
  136. * END DO
  137. ELSE IF ((N2.NE.N4 .AND. N1.EQ.N3) .OR. N2.EQ.0 .OR.
  138. & N4.EQ.0) THEN
  139. U0=(N4*U2-N2*U1)/(N4-N2)
  140. DO 130 I=1,LONG
  141. VSUR(I)=V12+(USUR(I)-U0)*(VSUR(I)-V12)/(U12-U0)
  142. 130 CONTINUE
  143. * END DO
  144. ELSE IF ((N1.NE.N3 .AND. N2.EQ.N4) .OR. N1.EQ.0 .OR.
  145. & N3.EQ.0) THEN
  146. V0=(N3*V1-N1*V2)/(N3-N1)
  147. DO 140 I=1,LONG
  148. USUR(I)=U12+(VSUR(I)-V0)*(USUR(I)-U12)/(V12-V0)
  149. 140 CONTINUE
  150. * END DO
  151. END IF
  152. *
  153. ELSE IF ((N2+N4).EQ.0) THEN
  154. * DEGENERESCENCE 2 ET 4
  155. U12=(U1+U2)*DEMI
  156. V12=(V1+V2)*DEMI
  157. DO 150 I=1,LONG
  158. VSURD=(USUR(I)-U1)*(USUR(I)-U2)*(VSUR(I)-V12)
  159. VSUR(I)=V12+VSURD/((U12-U1)*(U12-U2))
  160. 150 CONTINUE
  161. * END DO
  162. ELSE
  163. * DEGENERESCENCE 1 ET 3
  164. U12=(U1+U2)*DEMI
  165. V12=(V1+V2)*DEMI
  166. DO 160 I=1,LONG
  167. USURD=(VSUR(I)-V1)*(VSUR(I)-V2)*(USUR(I)-U12)
  168. USUR(I)=U12+USURD/((V12-V1)*(V12-V2))
  169. 160 CONTINUE
  170. * END DO
  171. END IF
  172. *
  173. ELSE
  174. *
  175. *------------------------- ETAPE = .FALSE. --------------------------
  176. *
  177. IF ((N1+N3).NE.0 .AND. (N2+N4).NE.0) THEN
  178. *
  179. * INVERSION ETAPE B
  180. *
  181. UMAX=MAX(U1,U2)
  182. UMIN=MIN(U1,U2)
  183. VMAX=MAX(V1,V2)
  184. VMIN=MIN(V1,V2)
  185. EPSU=(UMAX-UMIN)/30.
  186. EPSV=(VMAX-VMIN)/30.
  187. IF (IIMPI.EQ.1805) THEN
  188. WRITE(IOIMP,*)'UMAX,UMIN,VMAX,VMIN'
  189. WRITE(IOIMP,*)UMAX,UMIN,VMAX,VMIN
  190. END IF
  191. *
  192. IF (N1.NE.N3 .AND. N2.NE.N4 .AND. N1.NE.0 .AND.
  193. & N2.NE.0 .AND. N3.NE.0 .AND. N4.NE.0) THEN
  194. DO 210 I=1,LONG
  195. USURB=USUR(I)
  196. VSURB=VSUR(I)
  197. IF (VSUR(I).GE.VMAX) THEN
  198. VSUR(I)=VMAX-EPSV
  199. ELSE IF (VSUR(I).LE.VMIN) THEN
  200. VSUR(I)=VMIN+EPSV
  201. END IF
  202. USUR(I)=U12+(V12-V0)*(USURB-U12)/(VSUR(I)-V0)
  203. IF (USUR(I).GE.UMAX) THEN
  204. USUR(I)=UMAX-EPSU
  205. ELSE IF (USUR(I).LE.UMIN) THEN
  206. USUR(I)=UMIN+EPSU
  207. END IF
  208. VSUR(I)=V12+(VSURB-V12)*(U12-U0)/(USUR(I)-U0)
  209. IF (VSUR(I).GE.VMAX) THEN
  210. VSUR(I)=VMAX-EPSV
  211. ELSE IF (VSUR(I).LE.VMIN) THEN
  212. VSUR(I)=VMIN+EPSV
  213. END IF
  214. *
  215. USURC=USUR(I)
  216. VSURC=VSUR(I)
  217. DO 212 K=1,KMAX
  218. USUR(I)=U12+(V12-V0)*(USURB-U12)/(VSUR(I)-V0)
  219. IF (USUR(I).GE.UMAX) THEN
  220. USUR(I)=UMAX-EPSU
  221. ELSE IF (USUR(I).LE.UMIN) THEN
  222. USUR(I)=UMIN+EPSU
  223. END IF
  224. VSUR(I)=V12+(VSURB-V12)*(U12-U0)/(USUR(I)-U0)
  225. IF (VSUR(I).GE.VMAX) THEN
  226. VSUR(I)=VMAX-EPSV
  227. ELSE IF (VSUR(I).LE.VMIN) THEN
  228. VSUR(I)=VMIN+EPSV
  229. END IF
  230. CALL SURF18(K,KMAX,USURC,VSURC,USUR(I),VSUR(I),
  231. & DSUR(I),CONVRG)
  232. IF (CONVRG) THEN
  233. IF (IIMPI.EQ.1805) THEN
  234. WRITE(IOIMP,'(I5)')K
  235. END IF
  236. * EXIT
  237. GOTO 214
  238. END IF
  239. 212 CONTINUE
  240. * END DO
  241. 214 CONTINUE
  242. 210 CONTINUE
  243. * END DO
  244. ELSE IF ((N2.NE.N4 .AND. N1.EQ.N3) .OR. N2.EQ.0 .OR.
  245. & N4.EQ.0) THEN
  246. DO 220 I=1,LONG
  247. VSUR(I)=V12+(VSUR(I)-V12)*(U12-U0)/(USUR(I)-U0)
  248. 220 CONTINUE
  249. * END DO
  250. ELSE IF ((N1.NE.N3 .AND. N2.EQ.N4) .OR. N1.EQ.0 .OR.
  251. & N3.EQ.0) THEN
  252. DO 230 I=1,LONG
  253. USUR(I)=U12+(V12-V0)*(USUR(I)-U12)/(VSUR(I)-V0)
  254. 230 CONTINUE
  255. * END DO
  256. END IF
  257. *
  258. * INVERSION ETAPE A
  259. *
  260. DO 240 I=1,LONG
  261. USUR(I)=USUR(I)*A
  262. VSUR(I)=VSUR(I)/A
  263. 240 CONTINUE
  264. * END DO
  265. *
  266. ELSE IF ((N2+N4).EQ.0) THEN
  267. * DEGENERESCENCE 2 ET 4
  268. DO 250 I=1,LONG
  269. VSURD=(VSUR(I)-V12)*(U12-U1)*(U12-U2)
  270. VSUR(I)=V12+VSURD/((USUR(I)-U1)*(USUR(I)-U2))
  271. 250 CONTINUE
  272. * END DO
  273. *
  274. ELSE
  275. * DEGENERESCENCE 1 ET 3
  276. DO 260 I=1,LONG
  277. USURD=(USUR(I)-U12)*(V12-V1)*(V12-V2)
  278. USUR(I)=U12+USURD/((VSUR(I)-V1)*(VSUR(I)-V2))
  279. 260 CONTINUE
  280. * END DO
  281. END IF
  282. END IF
  283. *
  284. END
  285.  
  286.  
  287.  
  288.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales