The TELEMAC-MASCARET system  trunk
rescue_sisyphe.f
Go to the documentation of this file.
1 ! *************************
2  SUBROUTINE rescue_sisyphe
3 ! *************************
4 !
5  &(h,s,zf,zr,es,hw,tw,thetaw,npoin,nomblay,nsicla,
6  & trouve,alire,pass,icf,listi,maxvar)
7 !
8 !***********************************************************************
9 ! SISYPHE V7P2
10 !***********************************************************************
11 !
12 !brief COMPUTES MISSING DATA/VARIABLES FOR HYDRODYNAMIC
13 !+ AND/OR SEDIMENTOLOGICAL CONTINUATION RUN.
14 !
15 !history C. LENORMANT
16 !+
17 !+ V6P0
18 !+
19 !
20 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
21 !+ 13/07/2010
22 !+ V6P0
23 !+ Translation of French comments within the FORTRAN sources into
24 !+ English comments
25 !
26 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
27 !+ 21/08/2010
28 !+ V6P0
29 !+ Creation of DOXYGEN tags for automated documentation and
30 !+ cross-referencing of the FORTRAN sources
31 !
32 !history M.SECHER (EDF-CIH)
33 !+ 22/08/2016
34 !+ V7P2
35 !+ Add calculation of the rigid bed from bottom elevation and
36 !+ layers thickness of a previous sedimentology computation file
37 !
38 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39 !| ALIRE |-->| LIST VARIABLES TO BE READ
40 !| H |<->| WATER DEPTH
41 !| HW |<->| WAVE DEPTH
42 !| ICF |-->| BED-LOAD OR TOTAL LOAD TRANSPORT FORMULAS
43 !| LISTI |-->| LOGICAL, IF YES PRINT MESSAGES
44 !| MAXVAR |-->| MAXIMUM NUMBER OF OUTPUT VARIABLES
45 !| NPOIN |-->| NUMBER OF MESH NODES
46 !| PASS |-->| LOGICAL, IF YES BEGIN OF COMPUTATION
47 !| S |<->| WATER SURFACE ELEVATION
48 !| THETAW |<->| ANGLE BETWEEN WAVE AND CURRENT
49 !| TROUVE |-->| LOGIQUE INDIQUANT LES VARIABLES TROUVEES
50 !| | | DANS LE SOUS-PROGRAMME SUITE
51 !| TW |<->| WAVE PERIOD
52 !| ZF |<->| BED LEVEL
53 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 !
55  USE bief
56 !
57  USE interface_sisyphe, ex_rescue_sisyphe
58  & => rescue_sisyphe
59 !
61  IMPLICIT NONE
62 !
63 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
64 !
65  INTEGER, INTENT(IN) :: MAXVAR,NOMBLAY,NSICLA
66  INTEGER, INTENT(IN) :: ALIRE(maxvar),NPOIN,ICF
67  LOGICAL, INTENT(IN) :: PASS,LISTI
68  DOUBLE PRECISION, INTENT(IN) :: ES(npoin,nomblay)
69 !
70  INTEGER, INTENT(INOUT) :: TROUVE(maxvar)
71  DOUBLE PRECISION, INTENT(INOUT) :: S(npoin) , ZF(npoin), H(npoin)
72  DOUBLE PRECISION, INTENT(INOUT) :: ZR(npoin)
73  DOUBLE PRECISION, INTENT(INOUT) :: HW(npoin), TW(npoin)
74  DOUBLE PRECISION, INTENT(INOUT) :: THETAW(npoin)
75 !
76 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
77 !
78  INTEGER K,I,J
79  INTEGER CHECK_ES
80 !
81 !-----------------------------------------------------------------------
82 !
83 ! PRINTOUTS :
84 ! -----------
85  IF(pass.AND.listi) THEN
86  WRITE(lu,200)
87 200 FORMAT(80('-'))
88  IF(alire(8).EQ.1) THEN
89  WRITE(lu,301)
90 301 FORMAT(1x,'RESCUE : HYDRODYNAMIC FILE')
91  ELSE
92  WRITE(lu,311)
93 311 FORMAT(1x,'RESCUE : SEDIMENTOLOGICAL FILE')
94  ENDIF
95  ENDIF
96 !
97 ! ------------------------------------------------------------------
98 ! WATER DEPTH :
99 ! -------------
100  IF((alire(3).EQ.1).AND.(trouve(3).NE.1)) THEN
101  IF(trouve(4).EQ.1.AND.trouve(5).EQ.1) THEN
102  IF (listi) THEN
103  WRITE(lu,401)
104  ENDIF
105  CALL ov('X=Y-Z ', x=h, y=s, z=zf, dim1=npoin)
106  ELSE
107  IF (listi) THEN
108  WRITE(lu,421)
109  ENDIF
110  CALL plante(1)
111  stop
112  ENDIF
113  ENDIF
114 !
115 401 FORMAT(1x,'WATER DEPTH COMPUTED WITH BATHYMETRY',
116  & /,1x,' AND SURFACE ELEVATION')
117 421 FORMAT(1x,'WATER DEPTH UNABLE TO BE COMPUTED')
118 !
119 ! ----------------------------------------------------------------------
120 !
121 ! CLIPS NEGATIVE WATER DEPTHS :
122 ! -------------------------------------
123 !
124  DO k = 1,npoin
125  h(k) = max(h(k),0.d0)
126  ENDDO
127 !
128 !------------------------------------------------------------------------
129 !
130 ! WAVE HEIGHT AND PERIOD
131 !
132  IF(icf==4.OR.icf==5.OR.icf==8.OR.icf==9) THEN
133 !
134  IF(alire(12).EQ.1.AND.trouve(12).EQ.0) THEN
135  WRITE(lu,901)
136  CALL ov('X=C ', x=hw, c=0.d0, dim1=npoin)
137  ENDIF
138 !
139 901 FORMAT(1x,'PREVIOUS COMPUTATION WITHOUT WAVE HEIGHT : IT IS',
140  & ' FIXED TO ZERO')
141 !
142  IF(alire(13).EQ.1.AND.trouve(13).EQ.0) THEN
143  WRITE(lu,903)
144  CALL ov('X=C ', x=tw, c=0.d0, dim1=npoin)
145  ENDIF
146 903 FORMAT(1x,'PREVIOUS COMPUTATION WITHOUT WAVE PERIOD : IT IS',
147  & ' FIXED TO ZERO')
148 !
149  IF(alire(14).EQ.1.AND.trouve(14).EQ.0) THEN
150  WRITE(lu,905)
151  CALL ov('X=C ', x=thetaw, c=90.d0, dim1=npoin)
152  ENDIF
153  ENDIF
154 905 FORMAT(1x,'PREVIOUS COMPUTATION WITHOUT WAVE ANGLE : IT IS',
155  & ' FIXED TO ZERO')
156 !
157 !-----------------------------------------------------------------------
158 ! NON-ERODABLE BED
159 !
160  IF(alire(9).EQ.1.AND.trouve(9).EQ.0) THEN
161  WRITE(lu,908)
162  check_es=0
163  DO i = 1,nomblay
164  IF(trouve(5).EQ.1.AND.
165  & trouve(28+i+nsicla*(nomblay+4)).EQ.1) THEN
166  check_es=check_es+1
167  ENDIF
168  ENDDO
169  IF(check_es.EQ.nomblay) THEN
170  WRITE(lu,910)
171  DO i = 1,npoin
172  zr(i)=zf(i)
173  DO j = 1,nomblay
174  zr(i)=zr(i)-es(i,j)
175  ENDDO
176  ENDDO
177  trouve(9) = 1
178  ENDIF
179  ENDIF
180 908 FORMAT(1x,'PREVIOUS CALCULATION WITHOUT NON ERODABLE',
181  & /,1x,'BOTTOM')
182 910 FORMAT(1x,'PREVIOUS CALCULATION CONTAINS ALL LAYERS',
183  & /,1x,'RIGID BED COMPUTED FROM LAYERS THICKNESS',
184  & /,1x,'AND BOTTOM')
185 !
186 !-----------------------------------------------------------------------
187 ! BED ELEVATION
188 !
189  IF(alire(5).EQ.1.AND.trouve(5).EQ.0) THEN
190 !
191  IF(trouve(4).EQ.1.AND.trouve(3).EQ.1) THEN
192  IF (listi) THEN
193  WRITE(lu,411)
194 411 FORMAT(1x,'BATHYMETRY COMPUTED FROM WATER DEPTH',
195  & /,1x,'AND SURFACE ELEVATION')
196  ENDIF
197  CALL ov('X=Y-Z ', x=zf, y=s, z=h, dim1=npoin)
198  ELSE
199  CALL ov('X=C ', x=zf, c=0.d0, dim1=npoin)
200  WRITE(lu,961)
201  ENDIF
202 961 FORMAT(1x,'BOTTOM TOPOGRAPHY NOT FOUND',/,
203  & 'IT IS SET TO ZERO')
204 !
205  ENDIF
206 !
207  IF (pass.AND.listi) THEN
208  WRITE(lu,970)
209 970 FORMAT(80('-'))
210  ENDIF
211 !
212 !-----------------------------------------------------------------------
213 !
214  RETURN
215  END SUBROUTINE rescue_sisyphe
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
subroutine rescue_sisyphe(H, S, ZF, ZR, ES, HW, TW, THETAW, NPOIN, NOMBLAY, NSICLA, TROUVE, ALIRE, PASS, ICF, LISTI, MAXVAR)
Definition: rescue_sisyphe.f:8
Definition: bief.f:3