Salome HOME
Homard executable
[modules/homard.git] / src / tool / Gestion_MTU / gmshfi.F
1       subroutine gmshfi ( tab , adnew , adold , nbval )
2 c ______________________________________________________________________
3 c
4 c                             H O M A R D
5 c
6 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
7 c
8 c Version originale enregistree le 18 juin 1996 sous le numero 96036
9 c aupres des huissiers de justice Simart et Lavoir a Clamart
10 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
11 c aupres des huissiers de justice
12 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
13 c
14 c    HOMARD est une marque deposee d'Electricite de France
15 c
16 c Copyright EDF 1996
17 c Copyright EDF 1998
18 c Copyright EDF 2002
19 c Copyright EDF 2020
20 c ______________________________________________________________________
21 c
22 c    translate le contenu du tableau entier tab
23 c    de l'adresse adold a l'adresse adnew et cela pour nbval valeurs.
24 c ______________________________________________________________________
25 c .        .     .        .                                            .
26 c .  nom   . e/s . taille .           description                      .
27 c .____________________________________________________________________.
28 c . tab    . es  .   *    . tableau dans lequel on decale              .
29 c .        .     .        . sa longueur est a priori inconnue          .
30 c . adnew  . e   .   1    . adresse a laquelle on placera les valeurs  .
31 c . adold  . e   .   1    . adresse a laquelle sont les valeurs        .
32 c . nbval  . e   .   1    . nombre de valeurs a transferer             .
33 c ______________________________________________________________________
34 c
35 c====
36 c 0. declarations et dimensionnement
37 c====
38 c
39 c 0.1. ==> generalites
40 c
41       implicit none
42       save
43 c
44 c 0.2. ==> communs
45 c
46 #include "gmimpr.h"
47 c
48 c 0.3. ==> arguments
49 c
50       integer tab(*)
51 c
52       integer adnew , adold , nbval
53 c
54 c 0.4. ==> variables locales
55 c
56       integer iaux, ifin, decal
57 c
58 c====
59 c 1. decalage des valeur au sein du tableau tab
60 c       a condition que adnew <= adold
61 c    remarque : cette programmation de la boucle est celle qui entraine
62 c               le moins de calculs sur machine scalaire.
63 c               sur CRAY, les options de compilation vectorisent
64 c               totalement le traitement.
65 c====
66 c
67       decal = adold - adnew
68       if ( decal.lt.0 ) then
69 c
70         write(ulsort,1000) adnew, adold
71  1000   format(//2x,' ======  spg gmshfi ========',/2x,
72      >  ' le decalage d''indice ne peut s''effectuer car le nouvel',
73      > /2x,' indice (',i6,') est superieur a l''ancien (',i6,') .')
74         call ugstop('gmshfi',ulsort,0,1,1)
75 c
76       endif
77
78 c
79       ifin = adnew + nbval - 1
80 c
81       do 10 , iaux = adnew , ifin
82         tab(iaux) = tab(decal+iaux)
83  10   continue
84 c
85       end