surfp1
C SURFP1 SOURCE PV 22/04/26 21:15:08 11344 $ L0TOUR,msurr) ************************************************************************ * * S U R F P 1 * ----------- * * FONCTION: * --------- * * 1) LECTURE DES OPERANDES DES OPERATEURS "DALLER" ET "SURFACE" AVEC * L'OPTION "POLYNOME" (SURFACE PARAMETREE). * * 2) MAILLAGE DES COTES DE LA SURFACE (APPEL "SURFP2"). * * 3) (EVENTUELLEMENT) DEFINITION DU CONTOUR DE LA SURFACE (APPEL * "SURFP3"). * * PHRASE D'APPEL (EN GIBIANE): * ---------------------------- * * | SURFACE | * LILI = | DALLER | POLYNOME N M P00 P01 (P02 (P03 ...) ) * P10 P11 (P12 (P13 ...) ) * (P20 (P21 (P22 (P23 ...) ) * ( ... ) * (PARAMETRE U1 U2 V1 V2) (REGULIER) ; * * LE RESULTAT "LILI" EST LE MAILLAGE DE LA SURFACE D'EQUATION: * * | P00 P01 P02 P03 .. | | 1 | * 2 (M-1) | P10 P11 P12 P13 .. | | U | * P(U,V) = (1 V V ...V ) X | P20 P21 P22 P23 .. | X | .. | * | ... | |U**(N-1)| * * OPERANDES EN GIBIANE: * --------------------- * * N 'ENTIER ' NOMBRE DE COLONNES DE LA MATRICE DE POINTS. * = (DEGRE EN "U" DU POLYNOME) + 1 * >= 2 * M 'ENTIER ' NOMBRE DE LIGNES DE LA MATRICE DE POINTS. * = (DEGRE EN "V" DU POLYNOME) + 1 * >= 2 * P00, 'POINT ' COEFFICIENTS DU POLYNOME REPRESENTANT LA * P01, ... SURFACE PARAMETREE. LES ABSCISSES DES POINTS * DONNENT LA REPRESENTATION PARAMETRIQUE DES * ABSCISSES DES POINTS DE LA SURFACE, ETC... * U1, U2 'FLOTTANT' BORNES DU PARAMETRE "U" = (0,1) PAR DEFAUT. * V1, V2 'FLOTTANT' BORNES DU PARAMETRE "V" = (0,1) PAR DEFAUT. * REGULIER 'MOT ' LES POINTS DOIVENT ETRE REGULIEREMENT * REPARTIS DANS L'ESPACE GEOMETRIQUE (EU EGARD * AUX DENSITES EXISTANTES) PLUTOT QUE DANS * L'ESPACE PARAMETRIQUE. * * MODULES UTILISES: * ----------------- * IMPLICIT INTEGER(I-N) IMPLICIT real*8 (a-h,o-z) -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC TMSURFP * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * OPERAT (E) NOM DE L'OPERATEUR UTILISE. * +IDIM (E) VOIR LE COMMUN "COPTIO". * +MCOORD (E) VOIR LE COMMUN "COPTIO". * LIGN01 (S) COTE N.1 DE LA SURFACE A MAILLER (OBJET "MAILLAGE"). * LIGN02 (S) COTE N.2 DE LA SURFACE A MAILLER (OBJET "MAILLAGE"). * LIGN03 (S) COTE N.3 DE LA SURFACE A MAILLER (OBJET "MAILLAGE"). * LIGN04 (S) COTE N.4 DE LA SURFACE A MAILLER (OBJET "MAILLAGE"). * L0TOUR (S) CONTOUR DE LA SURFACE A MAILLER (OBJET "MAILLAGE"). * FOURNI UNIQUEMENT POUR L'OPERATEUR "SURFACE". * +MSURFP (S) POINTEUR DE LA SURFACE PARAMETREE. * LAISSE DANS L'ETAT ACTIF. * CHARACTER*4 OPERAT CHARACTER*(*) OPERAU INTEGER LIGN01,LIGN02,LIGN03,LIGN04,L0TOUR REAL*8 XBID(3) * * VARIABLES: * ---------- * * LIGNE. = COPIES LOCALES DES ARGUMENTS "LIGN0.", AVEC "."=1,2,3,4. * LETOUR = COPIE LOCALE DE L'ARGUMENT "L0TOUR". * INTEGER LIGNE1,LIGNE2,LIGNE3,LIGNE4,LETOUR real*8 bidsp SEGMENT,MTEMP INTEGER ITEMP(N1*N2) ENDSEGMENT POINTEUR MTEMP1.MTEMP * * CONSTANTES: * ----------- * * MOTCLE = LISTE DES MOT-CLES RECONNUS. * PARAMETER (LMOTCL = 2) CHARACTER*4 MOTCLE(LMOTCL) CHARACTER*4 SURF PARAMETER (SURF = 'SURF') * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 05 MARS 1987 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS. * ************************************************************************ * DATA MOTCLE/'PARA','REGU'/ * SEGINI,MSURFP msurr=msurfp ICOFSU = 0 IUVSUR = 0 IPRSUR = 0 * * VALEURS PAR DEFAUT DES PARAMETRES U1SUR = 0.D0 U2SUR = 1.D0 V1SUR = 0.D0 V2SUR = 1.D0 REGSUR = .FALSE. * * -- DIMENSIONS DE LA MATRICE -- * IF (IERR .NE. 0) RETURN NCOSUR = I IF (IERR .NE. 0) RETURN NLISUR = I * * -- LECTURE DES PARAMETRES PARTICULIERS -- * * DO 205 CONTINUE * IF (IRETOU .LE. 0) THEN * --> SORTIE DE BOUCLE GOTO 206 END IF * GOTO (101,102) IRETOU 101 CONTINUE IF (IERR .NE. 0) RETURN U1SUR = BIDSP IF (IERR .NE. 0) RETURN U2SUR = BIDSP IF (U1SUR.EQ.U2SUR) THEN RETURN END IF * RQ: AUCUNE RELATION D'ORDRE ENTRE "U1SUR" ET "U2SUR" POUR * NE PAS IMPOSER, PAR EXEMPLE, AU COTE 1 DE CORRESPONDRE * A LA PLUS PETITE VALEUR DE PARAMETRE. IF (IRETOU .EQ. 1) V1SUR = BIDSP IF (IRETOU .EQ. 1) V2SUR = BIDSP IF (V1SUR.EQ.V2SUR) THEN RETURN END IF GOTO 200 102 CONTINUE REGSUR = .TRUE. GOTO 200 200 CONTINUE * GOTO 205 * END DO 206 CONTINUE * * -- LECTURE DES POINTS DE LA MATRICE -- * N1 = NCOSUR N2 = NLISUR SEGINI,MTEMP N3 = N1 * N2 DO 250 IB=1,N3 IF (IERR .NE. 0) RETURN ITEMP(IB) = IP 250 CONTINUE * END DO * * LA MATRICE A ETE DONNEE LIGNE PAR LIGNE. MAIS C'EST UN RANGEMENT * COLONNE PAR COLONNE QUI EST INTERESSANT EN FORTRAN (EQUIVALENCE * AVEC MATRICE RECTANGULAIRE). SEGINI,MTEMP1 SEGSUP,MTEMP * * ECLATEMENT DE LA MATRICE EN MATRICES REELLES: N = NCOSUR M = NLISUR SEGINI,MCOFSU ICOFSU = MCOFSU SEGACT,MCOORD IF (IDIM .EQ. 3) THEN & COFSUR(1,1,1),COFSUR(1,1,2),COFSUR(1,1,3)) ELSE & COFSUR(1,1,1),COFSUR(1,1,2),XBID) END IF SEGSUP,MTEMP1 SEGDES,MCOFSU * * -- DEFINITION DES 4 COTES EN APPLIQUANT LA MATRICE DE POINTS -- * -- ET DEFINITION DU CONTOUR, POUR L'OPERATEUR "SURFACE" -- * OPERAT=OPERAU IF (IERR .NE. 0) RETURN * IF (OPERAT .EQ. SURF) THEN L0TOUR = LETOUR IF (IIMPI.EQ.1804) THEN END IF *>>>>> P.M. 04/10/90 *+* ELSE END IF *<<<<< LIGN01 = LIGNE1 LIGN02 = LIGNE2 LIGN03 = LIGNE3 LIGN04 = LIGNE4 *>>>>> P.M. 04/10/90 *+* END IF *<<<<< * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales