The TELEMAC-MASCARET system  trunk
bief_valida.f
Go to the documentation of this file.
1 ! **********************
2  SUBROUTINE bief_valida
3 ! **********************
4 !
5  &(varref,textref,uref,refformat,varres,textres,ures,resformat,
6  & maxtab,np,it,maxit,acomparer)
7 !
8 !***********************************************************************
9 ! BIEF V6P3 21/08/2010
10 !***********************************************************************
11 !
12 !brief VALIDATES THE RESULTS AGAINST AN ANALYTICAL SOLUTION
13 !+ OR AGAINST RESULTS IN THE COMPUTATION REFERENCE FILE.
14 !
15 !note THE LAST TIMESTEP ONLY IS COMPARED.
16 !note EXCEPT FOR THE BOTTOM, ASSUMES THAT THE REFERENCE
17 !+ FILE DOES HOLD THE VARIABLES TO BE COMPARED.
18 !
19 !warning THIS SUBROUTINE MUST BE MODIFIED ACCORDING TO EACH
20 !+ PARTICULAR CASE
21 !
22 !history J-M HERVOUET (LNHE)
23 !+ 05/08/2009
24 !+ V6P0
25 !+
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 13/07/2010
29 !+ V6P0
30 !+ Translation of French comments within the FORTRAN sources into
31 !+ English comments
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 21/08/2010
35 !+ V6P0
36 !+ Creation of DOXYGEN tags for automated documentation and
37 !+ cross-referencing of the FORTRAN sources
38 !
39 !history J-M HERVOUET (LNHE)
40 !+ 05/08/2009
41 !+ V6P3
42 !+ Name of code now printed in the listing.
43 !
44 !history Y AUDOUIN (LNHE)
45 !+ 25/05/2015
46 !+ V7P0
47 !+ Modification to comply with the hermes module
48 !
49 !history J,RIEHME (ADJOINTWARE)
50 !+ November 2016
51 !+ V7P2
52 !+ Replaced EXTERNAL statements to parallel functions / subroutines
53 !+ by the INTERFACE_PARALLEL
54 !
55 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 !| ACOMPARER |-->| INDICATES WHICH VARIABLE TO COMPARE
57 !| IT |-->| TIME STEP NUMBER
58 !| MAXIT |-->| MAXIMUM NUMBER OF ITERATIONS
59 !| MAXTAB |-->| TOTAL NUMBER OF VARIABLES
60 !| NP |-->| NUMBER OF POINTS TO BE CHECKED
61 !| REFFORMAT |-->| FORMAT OF REFERENCE FILE
62 !| RESFORMAT |-->| FORMAT OF RESULTS FILE
63 !| TEXTREF |-->| NAMES & UNITS OF VARIABLES IN THE REFERENCE FILE
64 !| TEXTRES |-->| NAMES & UNITS OF VARIABLES IN THE RESULTS FILE
65 !| UREF |-->| LOGICAL UNIT OF REFERENCE FILE
66 !| URES |-->| LOGICAL UNIT OF RESULTS FILE
67 !| VARREF |-->| BLOCK OF VARIABLES IN REFERENCE FILE
68 !| VARRES |-->| BLOCK OF VARIABLES IN RESULTS FILE
69 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70 !
71  USE bief, ex_bief_valida => bief_valida
72  USE bief_def
74 !
76  USE interface_parallel, ONLY : p_max
77  IMPLICIT NONE
78 !
79 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
80 !
81  INTEGER, INTENT(IN) :: NP,MAXTAB,IT,MAXIT,URES,UREF
82  INTEGER, INTENT(IN) :: ACOMPARER(maxtab)
83 !
84  CHARACTER(LEN=32), INTENT(IN) :: TEXTREF(maxtab),TEXTRES(maxtab)
85 !
86  TYPE(bief_obj), INTENT(INOUT) :: VARREF,VARRES
87  CHARACTER(LEN=*), INTENT(IN) :: REFFORMAT,RESFORMAT
88 !
89 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
90 !
91  INTEGER IVAR,I,IREF,IRES,IERMAX
92 !
93  DOUBLE PRECISION TIMEREF,TIMERES,ERMAX,ERR
94 !
95 !-----------------------------------------------------------------------
96 !
97  INTEGER FINDREF(500),FINDRES(500)
98  IF(maxtab.GT.500) THEN
99  WRITE(lu,*) 'WRONG SIZE OF FINDREF AND FINDRES IN BIEF_VALIDA'
100  CALL plante(1)
101  stop
102  ENDIF
103 !
104 !-----------------------------------------------------------------------
105 !
106  IF(it.EQ.maxit) THEN
107 !
108 ! CALLS SUITE TO READ THE REFERENCE FILE
109 !
110  WRITE(lu,11) namecode
111  CALL read_dataset(refformat,uref,varref,np,iref,timeref,
112  & textref,findref,acomparer,.true.,.true.,maxtab)
113 !
114 ! CALLS SUITE TO READ THE RESULTS FILE
115 !
116  WRITE(lu,13)
117  CALL read_dataset(resformat,ures,varres,np,ires,timeres,
118  & textres,findres,acomparer,.true.,.true.,maxtab)
119 !
120 !-----------------------------------------------------------------------
121 !
122  WRITE(lu,15)
123 !
124  IF(abs(timeres-timeref)/max(timeref,1.d-4).GT.1.d-2) THEN
125  WRITE(lu,17)
126  ENDIF
127  IF(ires.NE.iref) THEN
128  WRITE(lu,19)
129  ENDIF
130 !
131 !-----------------------------------------------------------------------
132 !
133 ! LOOP ON THE VARIABLES TO COMPARE
134 !
135  DO ivar=1,min(maxtab,varref%N,varres%N)
136 !
137  IF(acomparer(ivar).EQ.1) THEN
138 !
139 ! COMPARES THE VARIABLE IVAR
140 !
141  IF(findref(ivar).EQ.1.AND.findres(ivar).EQ.1) THEN
142 !
143  ermax = 0.d0
144  iermax = 1
145  DO i = 1 , np
146  err=abs(varref%ADR(ivar)%P%R(i)-varres%ADR(ivar)%P%R(i))
147  IF(err.GT.ermax) THEN
148  ermax=err
149  iermax=i
150  ENDIF
151  ENDDO
152 !
153  IF(ncsize.GT.1) ermax=p_max(ermax)
154  WRITE(lu,61) textres(ivar)(1:16),ermax
155 !
156  ELSEIF(findref(ivar).EQ.1) THEN
157 !
158  WRITE(lu,71) textres(ivar)(1:16)
159 !
160  ENDIF
161 !
162  ENDIF
163 !
164  ENDDO
165 !
166  WRITE(lu,51)
167 !
168  ENDIF
169 !
170 !-----------------------------------------------------------------------
171 !
172 11 FORMAT(1x,////,1x,80('='),/,
173  & 25x,' VALIDATION PROCEDURE OF ',a24,/,
174  & 1x,80('-'),//,
175  & 1x,' 1) READING THE REFERENCE FILE :',/,
176  & 1x,' ------------------------------',/)
177 13 FORMAT(1x,///,
178  & 1x,' 2) READING THE RESULTS FILE :',/,
179  & 1x,' --------------------------------',/)
180 15 FORMAT(1x,///,
181  & 1x,' 3) COMPARISON:',/,
182  & 1x,' --------------',/)
183 17 FORMAT(1x,///,
184  & 1x,' BEWARE: TIMES ARE DIFFERENT',/,
185  & 1x,' ---------------------------',/)
186 19 FORMAT(1x,///,
187  & 1x,' BEWARE: RECORD NUMBERS ARE DIFFERENT',/,
188  & 1x,' ------------------------------------',/)
189 !
190 51 FORMAT(1x,80('-'),/,23x,'END OF VALIDATION REPORT',/,
191  & 1x,80('='),////)
192 !
193 61 FORMAT(1x,'VARIABLE: ' ,a16,' DIFFERENCE: ',g16.7,/)
194 !
195 71 FORMAT(1x,'VARIABLE: ' ,a16,' NOT FOUND' ,/)
196 !
197 !-----------------------------------------------------------------------
198 !
199  RETURN
200  END
character(len=24) namecode
integer ncsize
Definition: bief_def.f:49
subroutine bief_valida(VARREF, TEXTREF, UREF, REFFORMAT, VARRES, TEXTRES, URES, RESFORMAT, MAXTAB, NP, IT, MAXIT, ACOMPARER)
Definition: bief_valida.f:8
subroutine read_dataset(FFORMAT, FID, VARSOR, NPOIN, RECORD, AT, VAR_LIST, TROUVE, ALIRE, LISTIN, LASTRECORD, MAXVAR)
Definition: read_dataset.f:8
Definition: bief.f:3