Salome HOME
Homard executable
[modules/homard.git] / src / tool / AP_Conversion / pcs2ar.F
1       subroutine pcs2ar ( nbfop2, profho, vap2ho,
2      >                    hetare, somare, np2are, filare )
3 c ______________________________________________________________________
4 c
5 c                             H O M A R D
6 c
7 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
8 c
9 c Version originale enregistree le 18 juin 1996 sous le numero 96036
10 c aupres des huissiers de justice Simart et Lavoir a Clamart
11 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
12 c aupres des huissiers de justice
13 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
14 c
15 c    HOMARD est une marque deposee d'Electricite de France
16 c
17 c Copyright EDF 1996
18 c Copyright EDF 1998
19 c Copyright EDF 2002
20 c Copyright EDF 2020
21 c ______________________________________________________________________
22 c
23 c    aPres adaptation - Conversion de Solution -
24 c     -                 -             -
25 c    interpolation p2 sur les noeuds lors du decoupage des ARetes
26 c                   -                                      --
27 c remarque : pcs2ar et pcsiar sont des clones
28 c ______________________________________________________________________
29 c .        .     .        .                                            .
30 c .  nom   . e/s . taille .           description                      .
31 c .____________________________________________________________________.
32 c . nbfop2 . e   .    1   . nombre de fonctions P2                     .
33 c . profho . es  .   *    . pour chaque entite en numerotation homard :.
34 c .        .     .        . 0 : l'entite est absente du profil         .
35 c .        .     .        . 1 : l'entite est presente dans le profil   .
36 c . vap2ho . es  . nbfop2*. variables iso-p2 numerotation homard       .
37 c .        .     . nbnoto .                                            .
38 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
39 c . np2are . e   . nbarto . numero des noeuds p2 milieux d'aretes      .
40 c . filare . e   . nbarto . premiere fille des aretes                  .
41 c . hetare . e   . nbarto . historique de l'etat des aretes            .
42 c ______________________________________________________________________
43 c
44 c====
45 c 0. declarations et dimensionnement
46 c====
47 c
48 c 0.1. ==> generalites
49 c
50       implicit none
51       save
52 c
53 #include "fractc.h"
54 #include "fractf.h"
55 c
56 c 0.2. ==> communs
57 c
58 #include "nombno.h"
59 #include "nombar.h"
60 c
61 c 0.3. ==> arguments
62 c
63       integer nbfop2
64       integer profho(nbnoto)
65       integer hetare(nbarto), somare(2,nbarto), np2are(nbarto)
66       integer filare(nbarto)
67 c
68       double precision vap2ho(nbfop2,*)
69 c
70 c 0.4. ==> variables locales
71 c
72       integer larete, a1, a2, sm, s1, s2, m1, m2, nuv
73 c ______________________________________________________________________
74 c
75 #include "impr03.h"
76 c
77 c====
78 c 1. interpolation pour les aretes qui viennent d'etre decoupees
79 c====
80 c
81       do 10 , larete = 1, nbarto
82 c
83 cgn        write(1,90001) 'Arete', larete, hetare(larete)
84         if ( hetare(larete).eq.2 ) then
85 c
86 c         recuperation des aretes filles
87 c
88           a1 = filare(larete)
89           a2 = a1 + 1
90 c
91 c         recuperation des sommets de l'arete
92 c
93           s1 = somare(1,larete)
94           s2 = somare(2,larete)
95 cgn          write(1,90001) '. profil sommet 1', s1, profho(s1)
96 cgn          write(1,90001) '. profil sommet 2', s2, profho(s2)
97 c
98 c         recuperation du noeud milieu de l'arete
99 c
100           sm = np2are(larete)
101 cgn          write(1,90001) '. profil milieu', sm, profho(sm)
102 c
103           if ( profho(s1).eq.1 .and. profho(s2).eq.1 .and.
104      >         profho(sm).eq.1 ) then
105 c
106 c         recuperation des noeuds milieux des aretes filles
107 c
108             m1 = np2are(a1)
109             m2 = np2are(a2)
110 cgn            write(1,90002) '. Noeuds milieux filles', m1, m2
111             profho(m1) = 1
112             profho(m2) = 1
113 c
114 c           interpolation p2 a :
115 c
116 c           interpolee (ui,i=1,3) = 3/8 u1 - 1/8 u2 + 3/4 u3
117 c
118             do 11, nuv = 1, nbfop2
119 c
120               vap2ho(nuv,m1) = trshu * vap2ho(nuv,s1)
121      >                       - unshu * vap2ho(nuv,s2)
122      >                       + trsqu * vap2ho(nuv,sm)
123               vap2ho(nuv,m2) = trshu * vap2ho(nuv,s2)
124      >                       - unshu * vap2ho(nuv,s1)
125      >                       + trsqu * vap2ho(nuv,sm)
126 c
127    11       continue
128 c
129           endif
130 c
131         endif
132 c
133    10 continue
134 c
135       end