The TELEMAC-MASCARET system  trunk
predes.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE predes
3 ! *****************
4 !
5  &(llt,aat,yagout,code)
6 !
7 !***********************************************************************
8 ! SISYPHE V6P2 01/07/2012
9 !***********************************************************************
10 !
11 !brief PREPARES THE VARIABLES WHICH WILL BE WRITTEN TO
12 !+ THE RESULTS FILE OR TO THE LISTING.
13 !
14 !history E. PELTIER; C. LENORMANT; J.-M. HERVOUET
15 !+ 11/09/1995
16 !+
17 !+
18 !
19 !history JMH
20 !+ 07/12/2009
21 !+ V6P0
22 !+ KS SET TO 0 IF LLT=0
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 !history P. TASSI (EDF)
37 !+ 01/07/2012
38 !+ V6P2
39 !+ Bug correction discharge along y
40 !
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !| AAT |-->| CURRENT TIME (FOR BUILDING SOLUTIONS)
43 !| CODE |-->| NAME OF CALLING PROGRAMME (TELEMAC2D OR 3D)
44 !| LLT |-->| LOCAL LT (MAY BE LT-1+PERCOU)
45 !| YAGOUT |-->| LOGICAL: IF YES GRAPHIC OUTPUT ANYWAY
46 !| | | (STEERED BY T2D)
47 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48 !
49  USE bief
51  IMPLICIT NONE
52 !
53 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
54 !
55  INTEGER , INTENT(IN) :: LLT
56  DOUBLE PRECISION , INTENT(IN) :: AAT
57  CHARACTER(LEN=24), INTENT(IN) :: CODE
58  LOGICAL , INTENT(IN) :: YAGOUT
59 !
60 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
61 !
62  INTEGER LTT,I,J
63  LOGICAL IMP,LEO
64 !
65 !-----------------------------------------------------------------------
66 !
67 ! THE OUTPUT VARIABLES ARE BUILT ONLY IF NECESSARY, HENCE THE
68 ! FOLLOWING TESTS, WHICH MUST BE THE SAME AS IN DESIMP (BIEF LIBRARY)
69 !
70  imp=.false.
71  leo=.false.
72  ltt=(llt/lispr)*lispr
73  IF(llt.EQ.ltt.AND.llt.GE.ptinil) imp=.true.
74  ltt=(llt/leopr)*leopr
75  IF(llt.EQ.ltt.AND.llt.GE.ptinig) leo=.true.
76 ! IF CODE =TELEMAC2D OUTOUT IS MANAGED BY T2D
77  IF(code(8:9).EQ.'2D')leo=yagout
78 !
79 ! NO PRINTOUTS REUIRED: LEAVING
80  IF (.NOT.(leo.OR.imp)) GO TO 1000
81 !
82 !=======================================================================
83 ! COMPUTES SECONDARY VARIABLES
84 !=======================================================================
85 !
86 ! FREE SURFACE: H+ZF
87 !
88  IF((leo.AND.sorleo(4)).OR.(imp.AND.sorimp(4))) THEN
89  CALL os('X=Y+Z ',x=z,y=hn,z=zf)
90  ENDIF
91 !
92 ! DISCHARGE
93 !
94  IF((leo.AND.sorleo(6)).OR.(imp.AND.sorimp(6))) THEN
95  DO i=1,npoin
96  q%R(i)=hn%R(i)*sqrt(u2d%R(i)**2+v2d%R(i)**2)
97  ENDDO
98  ENDIF
99 !
100 ! DISCHARGE ALONG X
101 !
102  IF((leo.AND.sorleo(7)).OR.(imp.AND.sorimp(7))) THEN
103  CALL os('X=YZ ',x=qu,y=u2d,z=hn)
104  ENDIF
105 !
106 ! DISCHARGE ALONG Y
107 !
108  IF((leo.AND.sorleo(8)).OR.(imp.AND.sorimp(8))) THEN
109  CALL os('X=YZ ',x=qv,y=v2d,z=hn)
110  ENDIF
111 !
112 !=======================================================================
113 !
114 ! VARIABLES WHICH ARE NOT INITIALISED AT THE FIRST CALL OF PREDES
115 !
116  IF(llt.EQ.0) THEN
117  IF((leo.AND.sorleo(19)).OR.(imp.AND.sorimp(19))) THEN
118  CALL os('X=0 ',x=ks)
119  ENDIF
120  ENDIF
121 !
122 !=======================================================================
123 ! UPDATE THE POINTERS TO THE DIFFERENTIATED VARIABLES
124 !=======================================================================
125 !
126 ! TODO: TRY NOT USING THE HARDCODED NUMBER 28
127 !
128  j = 28+max(4,npriv)+nsicla*(nomblay+4)+2*nomblay+varcl%N
129  DO i = 1,nadvar
130  IF((leo.AND.sorleo(j)).OR.(imp.AND.sorimp(j))) THEN
131  CALL ad_get_sisyphe(i,advar%ADR(i)%P)
132  j = j + 1
133  ENDIF
134  ENDDO
135 !
136 !=======================================================================
137 !
138  ! USER FUNCTION
139  CALL user_predes(llt,aat,yagout,code,leo,imp)
140 1000 CONTINUE
141 !
142 !=======================================================================
143 !
144  RETURN
145  END
type(bief_obj), target advar
logical, dimension(maxvar) sorleo
type(bief_obj), target ks
type(bief_obj), target varcl
type(bief_obj), target zf
subroutine ad_get_sisyphe(IVAR, ADOBJ)
Definition: ad_get_sisyphe.F:7
logical, dimension(maxvar) sorimp
double precision, dimension(:), pointer x
type(bief_obj), target v2d
type(bief_obj), target q
type(bief_obj), target z
double precision, dimension(:), pointer y
subroutine user_predes(LLT, AAT, YAGOUT, CODE, LEO, IMP)
Definition: user_predes.f:7
type(bief_obj), target qv
type(bief_obj), target qu
type(bief_obj), target hn
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), target u2d
subroutine predes(LLT, AAT, YAGOUT, CODE)
Definition: predes.f:7
Definition: bief.f:3