5 & (f1,name1,mode1, f2,name2,mode2,f3,name3,mode3,
6 & npoin,ndon,fformat,at,tv1,tv2,
7 & f11,f12,f21,f22,f31,f32,indic,chdon,nvar,texte,
8 & trouve,unitime,phastime)
89 INTEGER,
INTENT(IN) :: NDON,NPOIN,INDIC
90 INTEGER,
INTENT(INOUT) :: NVAR
91 INTEGER,
INTENT(IN) :: MODE1,MODE2,MODE3
92 DOUBLE PRECISION,
INTENT(INOUT) :: F1(npoin),F2(npoin),F3(npoin)
93 DOUBLE PRECISION,
INTENT(INOUT) :: F11(npoin),F21(npoin)
94 DOUBLE PRECISION,
INTENT(INOUT) :: F12(npoin),F22(npoin)
95 DOUBLE PRECISION,
INTENT(INOUT) :: F31(npoin),F32(npoin)
96 DOUBLE PRECISION,
INTENT(IN) :: AT,UNITIME,PHASTIME
97 DOUBLE PRECISION,
INTENT(INOUT) :: TV1,TV2
98 CHARACTER(LEN=8),
INTENT(IN) :: FFORMAT
99 CHARACTER(LEN=7),
INTENT(IN) :: CHDON
100 CHARACTER(LEN=32),
INTENT(IN) :: NAME1,NAME2,NAME3
101 CHARACTER(LEN=32),
INTENT(IN) :: TEXTE(30)
102 LOGICAL,
INTENT(INOUT) :: TROUVE(3)
107 DOUBLE PRECISION COEF
108 CHARACTER(LEN=32) NAME(3),FULL_NAME(3)
109 CHARACTER(LEN=16),
ALLOCATABLE :: VAR_NAME(:), VAR_UNIT(:)
110 CHARACTER(LEN=32) COMPONENT
111 LOGICAL :: COUUT=.false., venut=.false., marut=.false.
112 INTEGER :: RECORD1,RECORD2
113 DOUBLE PRECISION :: TIME1,TIME2
133 WRITE(
lu,*)
' NOUDON : READING A NEW RECORD' 146 CALL check_call(ierr,
'NOUDON:GET_DATA_NVAR')
148 ALLOCATE(var_name(nvar),stat=ierr)
149 CALL check_allocate(ierr,
'NOUDON:VAR_NAME')
150 ALLOCATE(var_unit(nvar),stat=ierr)
151 CALL check_allocate(ierr,
'NOUDON:VAR_UNIT')
153 CALL check_call(ierr,
'NOUDON:GET_DATA_VAR_LIST')
155 component(1:16) = var_name(i)
156 component(17:32) = var_unit(i)
159 IF((component.EQ.name(j)).AND.
162 full_name(j) = name(j)
173 CALL check_call(ierr,
'NOUDON:GET_DATA_TIME')
174 tv1=(time1-phastime)*unitime
177 CALL check_call(ierr,
'NOUDON:GET_DATA_TIME')
178 tv2=(time2-phastime)*unitime
181 WRITE(
lu,*)
' NOUDON: JUMP OF 1 DATA RECORD' 184 record2 = record2 + 1
192 IF(mode(j).EQ.2.AND..NOT.trouve(j))
THEN 193 WRITE(
lu,*)
'NOUDON: VARIABLE ',name1,
' NOT FOUND' 194 WRITE(
lu,*) trim(name(j)(1:16))
197 ELSEIF(mode(j).GT.0.AND.trouve(j))
THEN 199 WRITE(
lu,*)
'VARIABLE ',j,
' READ (',
200 & trim(name(j)(1:16)),
') AT TIME ',tv1
205 & full_name(j),f11,npoin,ierr)
208 & full_name(j),f21,npoin,ierr)
211 & full_name(j),f31,npoin,ierr)
219 IF(mode(j).EQ.2.AND..NOT.trouve(j))
THEN 220 WRITE(
lu,*)
'NOUDON: VARIABLE ',name1,
' NOT FOUND' 224 ELSEIF(mode(j).GT.0.AND.trouve(j))
THEN 226 WRITE(
lu,*)
'VARIABLE ',j,
' READ (',
227 & trim(name(j)(1:16)),
') AT TIME ',tv2
232 & full_name(j),f12,npoin,ierr)
235 & full_name(j),f22,npoin,ierr)
238 & full_name(j),f32,npoin,ierr)
243 ELSEIF (indic.EQ.4)
THEN 249 IF(chdon(1:1).EQ.
'C')
THEN 254 ELSEIF(chdon(1:1).EQ.
'V'.OR.chdon(1:1).EQ.
'W')
THEN 259 ELSEIF(chdon(1:1).EQ.
'H')
THEN 267 WRITE(
lu,*)
'************************************************' 268 WRITE(
lu,*)
'NOUDON : UNKNOWN INDICATOR OF FORMAT : ',indic
269 WRITE(
lu,*)
'************************************************' 280 IF((texte(i).EQ.name(j)).AND.
286 IF(couut.OR.venut)
THEN 290 IF(marut) trouve(3)=.true.
298 IF (abs(tv1-tv2).GT.1.d-30)
THEN 299 coef=(at-tv1)/(tv2-tv1)
306 f1(i)=(f12(i)-f11(i))*coef+f11(i)
312 f2(i)=(f22(i)-f21(i))*coef+f21(i)
318 f3(i)=(f32(i)-f31(i))*coef+f31(i)
328 WRITE(
lu,*)
'*********************************************' 329 WRITE(
lu,*)
' ERROR WHILE READING DATA FILE ' 330 WRITE(
lu,*)
' OR UNEXPECTED END OF FILE ' 331 WRITE(
lu,*)
'*********************************************' subroutine maruti(NMAR, FMTMAR)
subroutine get_data_nvar(FFORMAT, FID, NVAR, IERR)
subroutine get_data_var_list(FFORMAT, FID, NVAR, VARLIST, UNITLIST, IERR)
subroutine venuti(NVEN, FMTVEN)
subroutine get_data_value(FFORMAT, FID, RECORD, VAR_NAME, RES_VALUE, N, IERR)
subroutine noudon(F1, NAME1, MODE1, F2, NAME2, MODE2, F3, NAME3, MODE3, NPOIN, NDON, FFORMAT, AT, TV1, TV2, F11, F12, F21, F22, F31, F32, INDIC, CHDON, NVAR, TEXTE, TROUVE, UNITIME, PHASTIME)
subroutine couuti(NCOU, FMTCOU)
subroutine get_data_time(FFORMAT, FID, RECORD, TIME, IERR)