The TELEMAC-MASCARET system  trunk
allblo_in_block.f
Go to the documentation of this file.
1 ! **************************
2  SUBROUTINE allblo_in_block
3 ! **************************
4 !
5  &( blo , n , nomgen )
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief ALLOCATES MEMORY FOR N BLOCKS, WHICH WILL BE PART
12 !+ OF A GIVEN BLOCK.
13 !
14 !history J-M HERVOUET (LNH)
15 !+ 11/07/95
16 !+ V5P1
17 !+
18 !
19 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
20 !+ 13/07/2010
21 !+ V6P0
22 !+ Translation of French comments within the FORTRAN sources into
23 !+ English comments
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 21/08/2010
27 !+ V6P0
28 !+ Creation of DOXYGEN tags for automated documentation and
29 !+ cross-referencing of the FORTRAN sources
30 !
31 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 !| BLO |<->| BLOCK WHERE TO ALLOCATE THE BLOCK STRUCTURES
33 !| N |-->| NUMBER OF BLOCKS TO BE ADDED IN BLO
34 !| NOMGEN |-->| GENERIC FORTRAN NAME OF THE BLOCKS
35 !| | | IT WILL BE COMPLETED WITH THEIR RANK
36 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 !
38  USE bief, ex_allblo_in_block => allblo_in_block
39 !
41  IMPLICIT NONE
42 !
43 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
44 !
45  TYPE(bief_obj) , INTENT(INOUT) :: BLO
46  INTEGER , INTENT(IN) :: N
47  CHARACTER(LEN=6), INTENT(IN) :: NOMGEN
48 !
49 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
50 !
51  INTEGER IDEB,I,II
52 !
53  CHARACTER(LEN=6) :: NOM
54  CHARACTER(LEN=1), PARAMETER :: CHIFFRE(0:9) =
55  & (/'0','1','2','3','4','5','6','7','8','9'/)
56 !
57 !-----------------------------------------------------------------------
58 !
59  ideb = 6
60  DO i=5,2,-1
61  IF(nomgen(i:i).EQ.' ') ideb = i
62  ENDDO ! I
63 !
64 !-----------------------------------------------------------------------
65 !
66  IF(n.LE.blo%MAXBLOCK) THEN
67 !
68  DO i = 1 , n
69 !
70 ! NAME OF THE BLOCK
71 !
72  nom=nomgen
73  IF(i.LT.10) THEN
74  ideb = min(6,ideb)
75  nom(ideb:ideb) = chiffre(i)
76  ELSEIF(i.LT.100) THEN
77  ideb = min(5,ideb)
78  nom(ideb :ideb ) = chiffre(i/10)
79  nom(ideb+1:ideb+1) = chiffre(i-10*(i/10))
80  ELSEIF(i.LT.1000) THEN
81  ideb = min(4,ideb)
82  nom(ideb :ideb ) = chiffre(i/100)
83  ii=i-100*(i/100)
84  nom(ideb+1:ideb+1) = chiffre(ii/10)
85  nom(ideb+2:ideb+2) = chiffre(ii-10*(ii/10))
86  ELSE
87  WRITE(lu,*) 'TOO MANY BLOCKS IN ALLBLO_IN_BLOCK'
88  CALL plante(1)
89  stop
90  ENDIF
91 !
92 ! ALLOCATES THE BLOCK IF NOT ALREADY DONE
93 !
94  CALL first_all_biefobj(blo%ADR(i)%P)
95  CALL allblo(blo%ADR(i)%P,nom)
96  blo%N=blo%N+1
97  blo%ADR(i)%P%FATHER = blo%NAME
98 !
99  ENDDO
100 !
101  ELSE
102 !
103  WRITE(lu,*) 'ALLBLO_IN_BLOCK : MORE THAN '
104  WRITE(lu,*) ' ',blo%MAXBLOCK,' (',n,')'
105  WRITE(lu,*) ' BLOCKS TO BE ALLOCATED'
106  WRITE(lu,*) ' CHANGE MAXBLOCK IN ALLBLO'
107  CALL plante(1)
108  stop
109 !
110  ENDIF
111 !
112 !-----------------------------------------------------------------------
113 !
114  RETURN
115  END
subroutine allblo(BLO, NOM)
Definition: allblo.f:7
subroutine allblo_in_block(BLO, N, NOMGEN)
subroutine first_all_biefobj(OBJ)
Definition: bief.f:3