The TELEMAC-MASCARET system  trunk
fond.f
Go to the documentation of this file.
1 ! ***************
2  SUBROUTINE fond
3 ! ***************
4 !
5  &(zf ,x,y,npoin,nfon,nbor,kp1bor,nptfr)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief INITIALISES THE BOTTOM ELEVATION.
12 !
13 !history J-M HERVOUET (LNHE)
14 !+ 20/03/08
15 !+ V5P9
16 !+
17 !
18 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
19 !+ 13/07/2010
20 !+ V6P0
21 !+ Translation of French comments within the FORTRAN sources into
22 !+ English comments
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 21/08/2010
26 !+ V6P0
27 !+ Creation of DOXYGEN tags for automated documentation and
28 !+ cross-referencing of the FORTRAN sources
29 !
30 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 !| KP1BOR |-->| GIVES THE NEXT BOUNDARY POINT IN A CONTOUR
32 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
33 !| NFON |-->| LOGICAL UNIT OF FILE FOR BOTTOM BATHYMETRY
34 !| NPOIN |-->| NUMBER OF POINTS
35 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
36 !| X |-->| ABSCISSAE OF POINTS IN THE MESH
37 !| Y |-->| ORDINATES OF POINTS IN THE MESH
38 !| ZF |-->| ELEVATION OF BOTTOM
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !
41  USE bief, ex_fond => fond
42 !
44  IMPLICIT NONE
45 !
46 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
47 !
48  INTEGER, INTENT(IN) :: NFON,NPOIN,NPTFR
49  DOUBLE PRECISION, INTENT(OUT) :: ZF(npoin)
50  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
51  INTEGER, INTENT(IN) :: NBOR(nptfr),KP1BOR(nptfr)
52 !
53 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
54 !
55  INTEGER NP,ERR
56 !
57  DOUBLE PRECISION BID
58 !
59  CHARACTER(LEN=1) C
60 !
61  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: XRELV,YRELV,COTE
62 !
63 !-----------------------------------------------------------------------
64 ! READS THE DIGITISED POINTS
65 ! FROM LOGICAL UNIT NFON
66 !-----------------------------------------------------------------------
67 !
68 ! ASSESSES THE EXTENT OF DATA
69 !
70  np = 0
71 20 READ(nfon,120,end=24,err=124) c
72 120 FORMAT(a1)
73  IF(c(1:1).NE.'C'.AND.c(1:1).NE.'B') THEN
74  backspace( unit = nfon )
75  np = np + 1
76  READ(nfon,*) bid,bid,bid
77  ENDIF
78  GO TO 20
79 124 CONTINUE
80  WRITE(lu,19) np
81 19 FORMAT(1x,'FOND (BIEF)'
82  & ,/,1x,'ERROR IN THE BOTTOM FILE'
83  & ,/,1x,'AT LINE ',i7)
84  CALL plante(1)
85  stop
86 24 CONTINUE
87 !
88 ! DYNAMICALLY ALLOCATES THE ARRAYS
89 !
90  ALLOCATE(xrelv(np),stat=err)
91  ALLOCATE(yrelv(np),stat=err)
92  ALLOCATE(cote(np) ,stat=err)
93 !
94  IF(err.NE.0) THEN
95  WRITE(lu,11) np
96 11 FORMAT(1x,'FOND (BIEF)'
97  & ,/,1x,'ERROR DURING ALLOCATION OF 3 ARRAYS'
98  & ,/,1x,'OF SIZE ',i7)
99  CALL plante(1)
100  stop
101  ENDIF
102 !
103 ! READS THE DATA
104 !
105  rewind(nfon)
106  np = 0
107 23 READ(nfon,120,end=22,err=122) c
108  IF(c(1:1).NE.'C'.AND.c(1:1).NE.'B') THEN
109  backspace( unit = nfon )
110  np = np + 1
111  READ(nfon,*) xrelv(np) , yrelv(np) , cote(np)
112  ENDIF
113  GO TO 23
114 !
115 122 CONTINUE
116  WRITE(lu,13) np
117 13 FORMAT(1x,'FOND (BIEF)'
118  & ,/,1x,'ERROR IN THE BOTTOM FILE'
119  & ,/,1x,'AT LINE ',i7)
120  CALL plante(1)
121  stop
122 !
123 22 CONTINUE
124 !
125  WRITE(lu,113) np
126 113 FORMAT(1x,'FOND (BIEF):'
127  & ,/,1x,'NUMBER OF POINTS IN THE BOTTOM FILE: ',i7)
128 !
129 !-----------------------------------------------------------------------
130 ! THE BOTTOM ELEVATION IS COMPUTED BY INTERPOLATION ONTO THE
131 ! DOMAIN INTERIOR POINTS
132 !-----------------------------------------------------------------------
133 !
134  CALL fasp(x,y,zf,npoin,xrelv,yrelv,cote,np,nbor,kp1bor,nptfr,0.d0)
135 !
136 !-----------------------------------------------------------------------
137 !
138  DEALLOCATE(xrelv)
139  DEALLOCATE(yrelv)
140  DEALLOCATE(cote)
141 !
142 !-----------------------------------------------------------------------
143 !
144  RETURN
145  END
subroutine fasp(X, Y, ZF, NPOIN, XRELV, YRELV, ZRELV, NP, NBOR, KP1BOR, NPTFR, DM)
Definition: fasp.f:7
subroutine fond(ZF, X, Y, NPOIN, NFON, NBOR, KP1BOR, NPTFR)
Definition: fond.f:7
Definition: bief.f:3