1 subroutine sffa02 ( nouvno, coopro,
5 > ulsort, langue, codret)
6 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c Suivi de Frontiere - Frontiere Analytique - type 02 - sphere
27 c ______________________________________________________________________
29 c . nom . e/s . taille . description .
30 c .____________________________________________________________________.
31 c . nouvno . e . 1 . dernier numero de noeud cree .
32 c . coopro . e . sdim . nouvelles coordonnees du noeud .
33 c . lenoeu . e . 1 . noeud en cours d'examen .
34 c . coonoe . e . nouvno . coordonnees des noeuds .
36 c . censph . e . sdim . centre de la sphere .
37 c . raycyl . e . 1 . rayon de la sphere .
38 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
39 c . langue . e . 1 . langue des messages .
40 c . . . . 1 : francais, 2 : anglais .
41 c . codret . es . 1 . code de retour des modules .
42 c . . . . 0 : pas de probleme .
43 c . . . . x : probleme .
44 c ______________________________________________________________________
47 c 0. declarations et dimensionnement
50 c 0.1. ==> generalites
56 parameter ( nompro = 'SFFA02' )
70 double precision coonoe(nouvno,sdim)
71 double precision coopro(sdim)
72 double precision censph(sdim), raysph
74 integer ulsort, langue, codret
76 c 0.4. ==> variables locales
80 double precision vectcm(3)
84 parameter ( nbmess = 10 )
85 character*80 texte(nblang,nbmess)
87 c 0.5. ==> initialisations
88 c ______________________________________________________________________
97 write (ulsort,texte(langue,1)) 'Entree', nompro
103 texte(1,4) = '(''Centre de la sphere :'',3g15.8)'
104 texte(1,5) = '(''Rayon de la sphere :'',g15.8)'
105 texte(1,7) = '(''Noeud '',i8,'' :'',3g15.8)'
106 texte(1,8) = '(''Coordonnees initiales :'',3g15.8)'
107 texte(1,9) = '(''Coordonnees projetees :'',3g15.8)'
109 texte(2,4) = '(''Centre of the sphere:'',3g15.8)'
110 texte(2,5) = '(''Radius of the sphere:'',g15.8)'
111 texte(2,7) = '(''Node '',i8,'' :'',3g15.8)'
112 texte(2,8) = '(''Initial coordonnates:'',3g15.8)'
113 texte(2,9) = '(''Moved coordonnates :'',3g15.8)'
115 1001 format(a,' :',3g15.8)
117 #ifdef _DEBUG_HOMARD_
118 write (ulsort,texte(langue,4)) (censph(iaux), iaux = 1 , sdim)
119 write (ulsort,texte(langue,5)) raysph
122 c 1.2. ==> Tout va bien a priori
129 c 2.1. ==> Vecteur CM
131 #ifdef _DEBUG_HOMARD_
132 write (ulsort,texte(langue,7))
133 > lenoeu,(coonoe(lenoeu,iaux),iaux=1,sdim)
136 do 21 , iaux = 1 , sdim
137 vectcm(iaux) = coonoe(lenoeu,iaux) - censph(iaux)
139 cgn write (ulsort,1001) 'vectCM',(vectcm(iaux),iaux=1,sdim)
141 c 2.2. ==> Rayon pour le point M avant projection
144 do 22 , iaux = 1 , sdim
145 daux = daux + vectcm(iaux)*vectcm(iaux)
148 cgn write (ulsort,1001) 'DM',daux
150 c 2.3. ==> Vecteur CP = (Rayon cylindre/dist(CM)) * Vecteur CM
153 do 23 , iaux = 1 , sdim
154 vectcm(iaux) = daux *vectcm(iaux)
156 cgn write (ulsort,1001) 'vectCP',(vectcm(iaux),iaux=1,sdim)
158 c 2.4. ==> Coordonnees projetees : OmegaP = OmegaC + CP
160 do 24 , iaux = 1 , sdim
161 coopro(iaux) = censph(iaux) + vectcm(iaux)
163 #ifdef _DEBUG_HOMARD_
164 write (ulsort,texte(langue,8)) (coonoe(lenoeu,iaux),iaux=1,sdim)
165 write (ulsort,texte(langue,9)) (coopro(iaux), iaux = 1 , sdim)
168 do 222 , iaux = 1 , sdim
169 daux = daux + (coopro(iaux)-censph(iaux))**2
172 cgn write (ulsort,1001) 'DM',daux
178 if ( codret.ne.0 ) then
182 write (ulsort,texte(langue,1)) 'Sortie', nompro
183 write (ulsort,texte(langue,2)) codret
187 #ifdef _DEBUG_HOMARD_
188 write (ulsort,texte(langue,1)) 'Sortie', nompro