The TELEMAC-MASCARET system  trunk
solaux.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE solaux
3 ! *****************
4 !
5  &(ipt, tb,tbb,itb,itbb,s)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief TB IS A BLOCK OF VECTORS AND TBB A BLOCK OF BLOCKS.
12 !+ SOLAUX PREPARES A TBB BLOCK BY FILLING IT IN WITH
13 !+ MAX(1,S) VECTORS FROM TB.
14 !+
15 !+ THE OUTPUT ADDRESS IS AN ADDRESS RELATIVE TO TBB.
16 !+
17 !+ IN PRACTICE TB OBJECTS ARE VECTORS.
18 !
19 !history J.M. HERVOUET (LNH)
20 !+ 01/02/95
21 !+ V5P1
22 !+
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 13/07/2010
26 !+ V6P0
27 !+ Translation of French comments within the FORTRAN sources into
28 !+ English comments
29 !
30 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
31 !+ 21/08/2010
32 !+ V6P0
33 !+ Creation of DOXYGEN tags for automated documentation and
34 !+ cross-referencing of the FORTRAN sources
35 !
36 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 !| IPT |<--| POINTER IN TBB OF THE BIEF_OBJ STRUCTURE ASKED
38 !| ITB |-->| FIRST FREE VECTOR IN TB
39 !| ITBB |-->| FIRST FREE BLOCK IN TBB
40 !| S |-->| SIZE OF SYSTEM 1: 1 MATRIX
41 !| | | 2: 4 MATRICES
42 !| | | 3: 9 MATRICES
43 !| TB |-->| BLOCK OF WORKING BIEF_OBJ STRUCTURES
44 !| TBB |-->| BLOCK OF BLOCKS
45 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46 !
47  USE bief, ex_solaux => solaux
48 !
50  IMPLICIT NONE
51 !
52 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
53 !
54  INTEGER, INTENT(IN) :: S
55  INTEGER, INTENT(INOUT) :: ITB,IPT,ITBB
56 !
57 !-----------------------------------------------------------------------
58 !
59 ! STRUCTURES OF BLOCKS OF WORKING ARRAYS
60 !
61  TYPE(bief_obj), INTENT(INOUT) :: TB,TBB
62 !
63 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
64 !
65  INTEGER K,IAD,MAXTB,MAXTBB
66 !
67 !-----------------------------------------------------------------------
68 !
69  maxtbb = tbb%N
70  IF(itbb.GT.maxtbb) THEN
71  WRITE(lu,31) itbb
72  CALL plante(1)
73  stop
74  ENDIF
75  ipt = itbb
76  maxtb = tb%N
77  itbb = itbb + 1
78 ! REINITIALISES THE BLOCK
79  DO k=1,tbb%ADR(ipt)%P%N
80  NULLIFY(tbb%ADR(ipt)%P%ADR(k)%P)
81  ENDDO
82  tbb%ADR(ipt)%P%N=0
83  DO k = 1 , max(s,1)
84  IF(itb.GT.maxtb) THEN
85  WRITE(lu,11) itb + max(s,1) - k + 1
86  CALL plante(1)
87  stop
88  ENDIF
89  iad=itb
90  CALL addblo(tbb%ADR(ipt)%P,tb%ADR(iad)%P)
91  itb = itb + 1
92  ENDDO ! K
93 !
94 !-----------------------------------------------------------------------
95 !
96 11 FORMAT(1x,'SOLAUX (BIEF): INSUFFICIENT NUMBER OF ARRAYS',/,
97  & 1x,'IN BLOCK TB. MINIMUM REQUIRED:',1i4)
98 31 FORMAT(1x,'SOLAUX (BIEF): INSUFFICIENT NUMBER OF BLOCKS',/,
99  & 1x,'IN BLOCK TBB. MINIMUM REQUIRED:',1i4)
100 !
101 !-----------------------------------------------------------------------
102 !
103  RETURN
104  END
subroutine addblo(BLOC, OBJ)
Definition: addblo.f:7
subroutine solaux(IPT, TB, TBB, ITB, ITBB, S)
Definition: solaux.f:7
Definition: bief.f:3