Models History & Init

<< Click to Display Table of Contents >>

Navigation:  MODELS > Examples >

Models History & Init

 

1. History

 

This example illustrates various ways to assign history values to variables.This can be done in three ways:

in HISTORY x {dflt:2.3+t}

in INIT histdef(x):=2.3+t

in USE HISTORY x:=2.3+t . This is not supported by ATPDraw!!

 

The function histval(x, t) can be used to calculate the history value of x at time t.

 

 

BEGIN NEW DATA CASE                                              { HISTORY.DAT }

C deltat    tmax    xopt    copt  epsiln  tolmat  tstart

     1.      1.

C  print  points  connec     s-s  minmax    vary   again    plot

      1       1       0       0       0       0       0       0

C ==============================================================================

MODELS

 

MODEL history_assign     -- illustrates assignment and use of history in MODELS

 

VAR  y[1..5] -- declare variables y[1], y[2], ... y[5]

 

HISTORY y[1..5] {flt: -66} -- default history of y[..]

                            -- used if HISTORY is not passed in USE statement.

INIT -- to define values and history functions, privately inside the model

 

IF histval(y[2],0)=-66 THEN histdef(y[2]):=10*t ENDIF

  -- the above line uses histval() to access the history function of y[2]

  -- and assigns it a different function if some condition is true

 

 histdef(y[5]) := histdef(y[4]) +1

  -- the above line defines the history of y[5] as dependent of

  --  the history function already defined for y[4]

 

ENDINIT

 

EXEC

IF t=timestep THEN       -- letting contents execute only at the first time step

FOR k:=-10 to 0 DO

   wriite('Values of y[1..5] at t=', k, ' : ',

          histval(y[1],k), ', ', histval(y[2],k), ', ', histval(y[3],k), ', ',

          histval(y[4],k), ', ', histval(y[5],k)

        )

ENDFOR

ENDIF

ENDEXEC

ENDMODEL

 

--Not supported in ATPDraw:

USE history_assign AS history_assign

 HISTORY y[3..4]:=[t/2, t*t +3*t -4]  -- assign history functions to y[3], y[4]

ENDUSE

 

ENDMODELS

C ==============================================================================

C BRANCH CARDS

 SRCE                       10.

BLANK CARD ENDING BRANCHES

BLANK CARD ENDING SWITCHES

14SRCE           1.0       50.

BLANK CARD ENDING SOURCES

 SRCE

BLANK CARD ENDING NODE VOLTAGE REQUEST

BLANK CARD ENDING PLOT

BEGIN NEW DATA CASE

BLANK

 

 

2. Init

 

This example illustrates how to use the histval function in INIT to override the HISTORY definitions.

 

MODEL inival -- illustrates the 3 priority levels for initialization in MODELS:

            -- 1) the default history in the model itself,

            --     which can be modified by 2) and 3)

            -- 2) the history assigned in the USE statement using that model,

            --     which can be modified by 3)

            -- 3) the history assigned in the INIT section of the model

VAR a, b, ref

 

HISTORY a {dflt:0}, b {dflt:0} -- declare that a and b require history functions

                              -- and assign default history functions

INIT

 b:=100                       -- overwrite value of b prior to first execution

write('a(t) at t=', t-2*timestep, ' : ', histval(a, t-2*timestep) )

write('a(t) at t=',   t-timestep, ' : ', histval(a, t-timestep) )

write('a(t) at t=',   t, ' : ', histval(a, t) )

write(' ')

write('b(t) at t=', t-2*timestep, ' : ', histval(b, t-2*timestep) )

write('b(t) at t=',   t-timestep, ' : ', histval(b, t-timestep) )

write('b(t) at t=',   t, ' : ', histval(b, t) )

ENDINIT

 

EXEC

 diffeq(1|D0 +1|D1)|a :=b

 ref := 100 - 200*exp(-t)

ENDEXEC

ENDMODEL