41
42
43
50
51
52
53#include "implicit_f.inc"
54
55
56
57 INTEGER NTABLE0,NFUNCT,L
58 TYPE(TTABLE) TABLE(*)
59 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
60 TYPE(UNIT_TYPE_), INTENT(in) :: UNITAB
61
62
63
64#include "units_c.inc"
65
66
67
68 INTEGER I, K, N, ID, NDIM, NX(4), NY, STAT
70 CHARACTER(LEN=NCHARTITLE) :: TITR
71 CHARACTER MESS*40
72 DATA mess/' FUNCTION & TABLE DEFINITION '/
73 LOGICAL :: IS_ENCRYPTED,
74
75
76 is_encrypted = .false.
77 is_available = .false.
79 DO i=1,ntable0
81 . option_titr = titr,
84
85 nx(1) = 0
86 nx(2) = 0
87 nx(3) = 0
88 nx(4) = 0
89 CALL hm_get_intv(
'ORDER', ndim, is_available, lsubmodel)
90 IF(ndim/=1.AND.ndim/=2.AND.ndim/=3.AND.ndim/=4)THEN
92 . msgtype=msgerror,
93 . anmode=aninfo_blind_1,
95 . c1=titr)
96 END IF
97 IF(ndim > 0)
CALL hm_get_intv(
'N1', nx(1), is_available, lsubmodel)
98 IF(ndim > 1)
CALL hm_get_intv(
'N2', nx(2), is_available, lsubmodel)
99 IF(ndim > 2)
CALL hm_get_intv(
'N3', nx(3), is_available, lsubmodel)
100 IF(ndim > 3)
CALL hm_get_intv(
'N4', nx(4), is_available, lsubmodel)
101 IF(ndim==1)THEN
102 cycle
103 ENDIF
104 l=l+1
106 table(l)%NDIM=ndim
107 ALLOCATE(table(l)%X(ndim),stat=stat)
108 IF(stat/=0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,
109 . c1='TABLE')
110
111 DO k=1,ndim
112 IF(nx(k) < 2)THEN
114 . msgtype=msgerror,
115 . anmode=aninfo_blind_1,
117 . c1=titr,
118 . i2=k)
119 END IF
120 ENDDO
121
122 ALLOCATE(table(l)%X(1)%VALUES(nx(1)),stat=stat)
123 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
124 . msgtype=msgerror,
125 . c1='TABLE')
126
127
128 DO n =1, nx(1)
130 table(l)%X(1)%VALUES(n)= xk
131 END DO
132
133 IF(ndim > 1 ) THEN
134 ALLOCATE(table(l)%X(2)%VALUES(nx(2)),stat=stat)
135 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
136 . msgtype=msgerror,
137 . c1='TABLE')
138
139 DO n =1, nx(2)
141 table(l)%X(2)%VALUES(n)= xk
142 END DO
143 IF(ndim > 2 ) THEN
144 ALLOCATE(table(l)%X(3)%VALUES(nx(3)),stat=stat)
145 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
146 . msgtype=msgerror,
147 . c1='TABLE')
148 DO n =1, nx(3)
150 table(l)%X(3)%VALUES(n)= xk
151 END DO
152 IF(ndim > 3 ) THEN
153 ALLOCATE(table(l)%X(4)%VALUES(nx(4)),stat=stat)
154 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
155 . msgtype=msgerror,
156 . c1='TABLE')
157 DO n =1, nx(4)
159 table(l)%X(4)%VALUES(n)= xk
160 END DO
161 ENDIF
162 endif
163 ENDIF !(ndim > 1 )
164
165 ny=1
166 DO k=1,ndim
167 ny=ny*SIZE(table(l)%X(k)%VALUES)
168 END DO
169 ALLOCATE(table(l)%Y,stat=stat)
170
171 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
172 . msgtype=msgerror,
173 . c1='TABLE')
174
175 ALLOCATE(table(l)%Y%VALUES(ny),stat=stat)
176
177 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
178 . msgtype=msgerror,
179 . c1='TABLE')
180
181
182 DO n = 1, ny
184 table(l)%Y%VALUES(n)=yy
185 ENDDO
186
187
188 IF (is_encrypted)THEN
189 WRITE(iout,'(A)')'CONFIDENTIAL DATA'
190 ELSE
191 WRITE(iout,2100) table(l)%NOTABLE, table(l)%NDIM
192 DO k=1,table(l)%NDIM
193 nx(k)=SIZE( table(l)%X(k)%VALUES )
194 WRITE(iout,2200) k
195 WRITE(iout,2250) (table(l)%X(k)%VALUES(n),n=1,nx(k))
196 END DO
197 ny=SIZE(table(l)%Y%VALUES)
198 WRITE(iout,2300)
199 WRITE(iout,2350) (table(l)%Y%VALUES(n),n=1,ny)
200 END IF
201 END DO
202 RETURN
203
204
2052100 FORMAT(/' TABLE ID . . . . . . . . . . . . . . =',i10/
206 . ' NUMBER OF PARAMETERS . . . . . . . . =',i10/)
2072200 FORMAT(/' VALUES FOR PARAMETER NUMBER. . . . . .',i4,':'/)
2082250 FORMAT((3x,5(1x,g20.13))/)
2092300 FORMAT(/' ORDINATE VALUES . . . . . . . . . . . :'/)
2102350 FORMAT((3x,5(1x,g20.13))/)
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharfield
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)