The TELEMAC-MASCARET system  trunk
hydromap.f
Go to the documentation of this file.
1 ! *******************
2  SUBROUTINE hydromap
3 ! *******************
4 !
5  &(cn,x,y,npoin,ncn,nbor,kp1bor,nptfr)
6 !
7 !***********************************************************************
8 ! BIEF V7P2
9 !***********************************************************************
10 !
11 !brief INTERPOLATE CN (CURVE NUMBER, RUNOFF PARAMETER) ON THE MESH
12 ! (INSPIRED FROM SUBROUTINE FOND (BIEF))
13 !
14 !history RIADH ATA (LNHE)
15 !+ 29/06/16
16 !+ V7P2
17 !+
18 !
19 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 !| KP1BOR |-->| GIVES THE NEXT BOUNDARY POINT IN A CONTOUR
21 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
22 !| NCN |-->| LOGICAL UNIT OF FILE FOR CN VALUES
23 !| NPOIN |-->| NUMBER OF POINTS
24 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
25 !| X |-->| ABSCISSAE OF POINTS IN THE MESH
26 !| Y |-->| ORDINATES OF POINTS IN THE MESH
27 !| CN |<--| INTERPOLATED CN VALUES
28 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29 !
30  USE bief, ex_hydromap => hydromap
32 !
33  IMPLICIT NONE
34 !
35 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
36 !
37  INTEGER, INTENT(IN) :: NCN,NPOIN,NPTFR
38  DOUBLE PRECISION, INTENT(INOUT) :: CN(npoin)
39  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
40  INTEGER, INTENT(IN) :: NBOR(nptfr),KP1BOR(nptfr)
41 !
42 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
43 !
44  INTEGER NP,ERR
45 !
46  DOUBLE PRECISION BID
47 !
48  CHARACTER(LEN=1) C
49 !
50  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: XRELV,YRELV,LUCN
51 !
52 !-----------------------------------------------------------------------
53 ! READS THE DIGITISED POINTS
54 ! FROM LOGICAL UNIT NCN
55 !-----------------------------------------------------------------------
56 !
57  CALL ov('X=C ',x=cn, c=0.d0, dim1=npoin)
58 !
59 ! ASSESSES THE EXTENT OF DATA
60 !
61  np = 0
62 20 READ(ncn,120,end=24,err=124) c
63 120 FORMAT(a1)
64  IF(c(1:1).NE.'#') THEN
65  backspace( unit = ncn )
66  np = np + 1
67  READ(ncn,*) bid,bid,bid
68  ENDIF
69  GO TO 20
70 124 CONTINUE
71  WRITE(lu,19) np
72 19 FORMAT(1x,'HYDROMAP (BIEF):'
73  & ,/,1x,'ERROR IN THE CURVE NUMBERS FILE'
74  & ,/,1x,'AT LINE ',i7)
75  CALL plante(1)
76  stop
77 24 CONTINUE
78 !
79 ! DYNAMICALLY ALLOCATES THE ARRAYS
80 !
81  ALLOCATE(xrelv(np),stat=err)
82  ALLOCATE(yrelv(np),stat=err)
83  ALLOCATE(lucn(np) ,stat=err)
84 !
85  IF(err.NE.0) THEN
86  WRITE(lu,11) np
87 11 FORMAT(1x,'HYDROMAP (BIEF):'
88  & ,/,1x,'ERROR DURING ALLOCATION OF 3 ARRAYS'
89  & ,/,1x,'OF SIZE ',i7)
90  CALL plante(1)
91  stop
92  ENDIF
93 !
94 ! READS THE DATA
95 !
96  rewind(ncn)
97  np = 0
98 23 READ(ncn,120,end=22,err=122) c
99  IF(c(1:1).NE.'#') THEN
100  backspace( unit = ncn )
101  np = np + 1
102  READ(ncn,*) xrelv(np) , yrelv(np) , lucn(np)
103  ENDIF
104  GO TO 23
105 !
106 122 CONTINUE
107  WRITE(lu,13) np
108 13 FORMAT(1x,'HYDROMAP (BIEF):'
109  & ,/,1x,'ERROR IN THE CURVE NUMBERS FILE'
110  & ,/,1x,'AT LINE ',i7)
111  CALL plante(1)
112  stop
113 !
114 22 CONTINUE
115 !
116  WRITE(lu,113) np
117 113 FORMAT(1x,'HYDROMAP (BIEF):'
118  & ,/,1x,'NUMBER OF POINTS IN THE CURVE NUMBERS FILE:',i7
119  & ,/,1x,'INTERPOLATING ........')
120 !
121 !-----------------------------------------------------------------------
122 ! THE BOTTOM ELEVATION IS COMPUTED BY INTERPOLATION ONTO THE
123 ! DOMAIN INTERIOR POINTS
124 !-----------------------------------------------------------------------
125 !
126  CALL fasp(x,y,cn,npoin,xrelv,yrelv,lucn,np,nbor,kp1bor,nptfr,0.d0)
127 !
128 !-----------------------------------------------------------------------
129 !
130 ! VERIFICATION
131 ! DO NP=1,10
132 ! WRITE(LU,*)'DANS HYDROMAP:',CN(NP),LUCN(NP)
133 ! ENDDO
134 !
135 !-----------------------------------------------------------------------
136 !
137  DEALLOCATE(xrelv)
138  DEALLOCATE(yrelv)
139  DEALLOCATE(lucn)
140 !
141 !-----------------------------------------------------------------------
142 !
143  RETURN
144  END
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
subroutine hydromap(CN, X, Y, NPOIN, NCN, NBOR, KP1BOR, NPTFR)
Definition: hydromap.f:7
subroutine fasp(X, Y, ZF, NPOIN, XRELV, YRELV, ZRELV, NP, NBOR, KP1BOR, NPTFR, DM)
Definition: fasp.f:7
Definition: bief.f:3