44 . NOM_OPT ,FUNCRYPT ,UNITAB ,LSUBMODEL)
57#include "implicit_f.inc"
66 INTEGER NFUNCT, NPTS_ALLOC
67 INTEGER NPC(*),FUNCRYPT(*)
71 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
76 INTEGER I,L,FUNC_ID,NPTS,STAT,N,ISMOOTH
79 my_real xscale,yscale,xshift,yshift
80 CHARACTER(LEN=NCHARTITLE) :: TITR
81 CHARACTER MESS*40,KEY*20
82 DATA mess/
' FUNCTION & TABLES DEFINITION '/
83 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
84 INTEGER :: NB_FUNCT, NB_FUNCT_SMOOTH, IPT, NPT
88 IF (nfunct == 0)
RETURN
92 WRITE (iout,2000) nfunct
95 is_encrypted = .false.
96 is_available = .false.
105 IF (nb_funct > 0)
THEN
110 . option_titr = titr,
111 . option_id = func_id,
116 IF(key(6:12) ==
'_SMOOTH') ismooth = 1
117 IF(key(6:12) ==
'_PYTHON') ipython = 1
119 IF(ismooth == 0 .AND. ipython == 0 )
THEN
122 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,l),ltitr)
123 nom_opt(1, l) = func_id
124 npc(nfunct + l + 1) = func_id
125 npc(2 * nfunct + l + 1) = ismooth
128 WRITE(iout, 2100) func_id
130 CALL hm_get_intv(
'numberofpoints', npt, is_available, lsubmodel)
135 IF (.NOT. is_encrypted)
THEN
136 WRITE(iout,
'(3X,1PG20.13,2X,1G20.13)') time,funct
139 pld(npc(l + 1)) = time
141 IF (pld(npc(l+1)) <= pld(npc(l+1)-2))
THEN
143 CALL ancmsg(msgid = 156, msgtype = msgerror, anmode = aninfo_blind_1,
144 . i1 = func_id, c1 = titr, i2 = npts, i3 = npts-1)
147 npc(l + 1) = npc(l + 1) + 1
148 pld(npc(l + 1)) = funct
149 npc(l + 1) = npc(l + 1) + 1
153 CALL ancmsg(msgid=1874, msgtype=msgwarning, anmode=aninfo_blind_1,
159 table(l)%NOTABLE=func_id
162 ALLOCATE(table(l)%X(1),stat=stat)
163 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
166 ALLOCATE(table(l)%X(1)%VALUES(npts),stat=stat)
167 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
170 ALLOCATE(table(l)%Y,stat=stat)
171 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
174 ALLOCATE(table(l)%Y%VALUES(npts),stat=stat)
175 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
180 TABLE(L)%X(1)%VALUES(N)=PLD(NPC(L)+2*N-2)
181 TABLE(L)%Y%VALUES(N) =PLD(NPC(L)+2*N-1)
183 IF (IS_ENCRYPTED) THEN
184 WRITE(IOUT,'(a)
')'confidential data
'
193 IF (NB_FUNCT_SMOOTH > 0) THEN
194 CALL HM_OPTION_START('/funct_smooth
')
195 DO I = 1, NB_FUNCT_SMOOTH
197 CALL HM_OPTION_READ_KEY(LSUBMODEL,
198 . OPTION_TITR = TITR,
199 . OPTION_ID = FUNC_ID,
202 CALL HM_OPTION_IS_ENCRYPTED(IS_ENCRYPTED)
205 CALL FRETITL(TITR,NOM_OPT(LNOPT1-LTITR+1,L),LTITR)
206 NOM_OPT(1, L) = FUNC_ID
207 NPC(NFUNCT + L + 1) = FUNC_ID
208 NPC(2 * NFUNCT + L + 1) = ISMOOTH
211 WRITE(IOUT, 2200) FUNC_ID
213 CALL HM_GET_FLOATV('a_scale_x
' ,XSCALE ,IS_AVAILABLE ,LSUBMODEL ,UNITAB)
214 CALL HM_GET_FLOATV('f_scale_y
' ,YSCALE ,IS_AVAILABLE ,LSUBMODEL ,UNITAB)
215 CALL HM_GET_FLOATV('a_shift_x
' ,XSHIFT ,IS_AVAILABLE ,LSUBMODEL ,UNITAB)
216 CALL HM_GET_FLOATV('f_shift_y
' ,YSHIFT ,IS_AVAILABLE ,LSUBMODEL ,UNITAB)
217 IF (XSCALE == ZERO) XSCALE = ONE
218 IF (YSCALE == ZERO) YSCALE = ONE
221.NOT.
IF ( IS_ENCRYPTED)
222 . WRITE(IOUT,'(3x,1pg20.13,3(2x,1g20.13))
') XSCALE,YSCALE,XSHIFT,YSHIFT
226 CALL HM_GET_INTV('numberofpoints
', NPT, IS_AVAILABLE, LSUBMODEL)
229 CALL HM_GET_FLOAT_ARRAY_INDEX('points
', TIME, 2 * IPT - 1, IS_AVAILABLE, LSUBMODEL, UNITAB)
230 CALL HM_GET_FLOAT_ARRAY_INDEX('points
', FUNCT, 2 * IPT, IS_AVAILABLE, LSUBMODEL, UNITAB)
232 TIME = TIME * XSCALE + XSHIFT
233 FUNCT = FUNCT * YSCALE + YSHIFT
235.NOT.
IF ( IS_ENCRYPTED) THEN
236 WRITE(IOUT,'(3x,1pg20.13,2x,1g20.13)
') TIME,FUNCT
239 PLD(NPC(L + 1)) = TIME
241 IF (PLD(NPC(L+1)) <= PLD(NPC(L+1)-2)) THEN
242! Decreasing time line
243 CALL ANCMSG(MSGID = 156, MSGTYPE = MSGERROR, ANMODE = ANINFO_BLIND_1,
244 . I1 = FUNC_ID, C1 = TITR, I2 = NPTS, I3 = NPTS-1)
247 NPC(L + 1) = NPC(L + 1) + 1
248 PLD(NPC(L + 1)) = FUNCT
249 NPC(L + 1) = NPC(L + 1) + 1
253 CALL ANCMSG(MSGID=1874, MSGTYPE=MSGWARNING, ANMODE=ANINFO_BLIND_1,
258! build table structure
259 TABLE(L)%NOTABLE=FUNC_ID
262 ALLOCATE(TABLE(L)%X(1),STAT=stat)
263 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,
266 ALLOCATE(TABLE(L)%X(1)%VALUES(NPTS),STAT=stat)
267 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,
270 ALLOCATE(TABLE(L)%Y,STAT=stat)
271 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,
274 ALLOCATE(TABLE(L)%Y%VALUES(NPTS),STAT=stat)
275 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,
280 TABLE(L)%X(1)%VALUES(N)=PLD(NPC(L)+2*N-2)
281 TABLE(L)%Y%VALUES(N) =PLD(NPC(L)+2*N-1)
283 IF (IS_ENCRYPTED) THEN
284 WRITE(IOUT,'(a)
')'confidential data
'
296 . ' number of load curves. . . . . . . . =
',I10/)
2972100 FORMAT(/' load curve
id . . . . . . . . . . . =
',I10//
2992200 FORMAT(/' load smooth curve
id . . . . . . . =
',I10)
3002300 FORMAT(/' xscale yscale xshift
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)