The TELEMAC-MASCARET system  trunk
condis_sisyphe.f
Go to the documentation of this file.
1 ! *************************
2  SUBROUTINE condis_sisyphe
3 ! *************************
4 !
5  &(constflow)
6 !
7 !***********************************************************************
8 ! SISYPHE V6P1 21/07/2011
9 !***********************************************************************
10 !
11 !brief
12 !
13 !history BUI MINH DUC
14 !+ **/08/2003
15 !+
16 !+ DEVELOPED THE SUBROUTINE
17 !
18 !history F. HUVELIN
19 !+ **/02/2004
20 !+ V5P4
21 !+
22 !
23 !history B. MINH DUC; F. HUVELIN
24 !+
25 !+ V5P5
26 !+
27 !
28 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
29 !+ 13/07/2010
30 !+ V6P0
31 !+ Translation of French comments within the FORTRAN sources into
32 !+ English comments
33 !
34 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
35 !+ 21/08/2010
36 !+ V6P0
37 !+ Creation of DOXYGEN tags for automated documentation and
38 !+ cross-referencing of the FORTRAN sources
39 !
40 !history J,RIEHME (ADJOINTWARE)
41 !+ November 2016
42 !+ V7P2
43 !+ Replaced EXTERNAL statements to parallel functions / subroutines
44 !+ by the INTERFACE_PARALLEL
45 !
46 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47 !| CONSTFLOW |<->|LOGICAL, CONSTANT FLOW DISCHARGE OR NOT
48 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49 !
50  USE bief
53  !
55  USE interface_parallel, ONLY : p_isum
56  IMPLICIT NONE
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  LOGICAL, INTENT(INOUT) :: CONSTFLOW
61 !
62 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
63 !
64 !3/ LOCAL VARIABLES
65 !--------------------
66 !
67  INTEGER :: NZFMAX, I
68  DOUBLE PRECISION :: ZFMAX
69 !
70 !=======================================================================!
71 !=======================================================================!
72 ! PROGRAM !
73 !=======================================================================!
74 !=======================================================================!
75 !
76  nzfmax = 0
77 !
78  IF(constflow) THEN
79  CALL os('X=X+Y ', x=ecpl, y=e)
80 !
81  DO i=1,npoin
82  zfmax = abs(ecpl%R(i)) - crit_cfd*hcpl%R(i)
83  IF (zfmax.GT.1.d-8) nzfmax=nzfmax+1
84  ENDDO
85 !
86  IF (ncsize.GT.1) THEN
87  nzfmax=p_isum(nzfmax)
88  CALL parcom(ecpl,2,mesh)
89  ENDIF
90 !
91  IF (nzfmax.GE.1) constflow = .false.
92  ENDIF
93 !
94  IF(.NOT.constflow) THEN
95  CALL os('X=C ', x=ecpl, c=0.d0)
96  CALL os('X=Y ', x=hcpl, y=hn)
97 !
98  IF (ncsize.GT.1) THEN
99  CALL parcom(ecpl,2,mesh)
100  CALL parcom(hcpl,2,mesh)
101  ENDIF
102  ENDIF
103 !
104 !=======================================================================!
105 !=======================================================================!
106 !
107  RETURN
108  END
type(bief_obj), target hcpl
type(bief_obj), target e
integer function p_isum(MYPART)
Definition: p_isum.F:7
subroutine condis_sisyphe(CONSTFLOW)
Definition: condis_sisyphe.f:7
double precision, dimension(:), pointer x
double precision, dimension(:), pointer y
type(bief_obj), target hn
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine parcom(X, ICOM, MESH)
Definition: parcom.f:7
type(bief_mesh), target mesh
type(bief_obj), target ecpl
Definition: bief.f:3